• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET也可以做得很好1.XSLT初识一个HELLO例子

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

XSL 指扩展样式表语言(EXtensible Stylesheet Language)

万维网联盟开始发展 XSL 的起因是由于对基于 XML 的样式表语言的需求。

XSLT 指 XSL 转换。XSLT 将 XML 文档转换为其他文档,比如 XHTML

概念不多讲,这里附上W3C的网址 ,希望您一定要去看看!

老规矩,先写出个能运行的程序再说。

既然XSLT是将XML文档转换为其它文档,那么我们就先建立一个XML文档吧。(名为:HelloHtml.xml)

<?xml version="1.0" encoding="utf-8" ?>
<root>
<greeting>Hello Angel</greeting>
</root>

同样,还要再建立一个xslt文件,这里把它们放到同一个目录下。(名为:HelloHtml.xslt)

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl
="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes"/>
<xsl:template match="root">
<h1><xsl:value-of select="greeting"/></h1>
</xsl:template>
</xsl:stylesheet>

想来xml文件应该不用讲解了,那就看看xslt文件吧:

首先,它也是一个xml文档,stylesheet节点标记了此xsl样式文件的版本,xmlns(xml命名空间)等信息。output标记中method声明以什么形式转换文档,当然,它不仅仅能做html转换,也可以做其它诸如xml,text,pdf等转换。 ident声明了是否要对输出文档作缩进。

template标记声明这是一个转换模板,match标记声明了它将对哪个节点下的元素进行匹配。

value-of标记是个取值指令,它将会把xml文档中元素名为select中指定的元素的值取出来作为转换后的数据。

由此分析,经转换后输出的html内容应该是:

<h1>Hello Angel</h1>

由于xslt为WEB标准,并且被大多数主流浏览器所支持,所以仅仅需要将xml文件与xslt文件都发送到客户端,浏览器就会自动将其转换为XHTML文档。

接下来就是要给xml档引入xslt样式表了,这样xslt才能对xml文档进行转换,在xml文件的版本声明后加上这样一句:

<?xml-stylesheet type="text/xsl" href="/HelloHtml.xslt"?>

此时再浏览xml文件,就会看到浏览器不是仅仅显示一个XML的文档树了(有些浏览器显示纯xml文档是纯文本格式的),而应该是一个又大又粗的一号标题文本:



但它并不是一个标准的XHTML文档,因为转换后生成的内容仅仅是如下的:

<h1>Hello Angel</h1>

而一个标准的xhtml文档至少应该是下面:(当然,这里是xhtml1.1版本的,DOCTYPE可能会有所不同)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
</head>
<body>
<h1>Hello Angel</h1>
</body>
</html>

如何才能输出这样一个文档呢?当然,看了上面的例子后,你一定能把除了DOCTYPE之外的其它元素都完整地输出,但关键就是要输出DOCTYPE,因为如果一个html/xhtml文档如果没有一个正确的doctype,将可能会触发浏览器的怪异模式,这将有可能造成浏览器对内容的显示非常混乱,当然,即使是小小的差异,只要是不可预料的也确实是件令人头痛的事情!

其实output指令还有两个属性,一个是doctype-public,一个是doctype-system。正好对应html/xhtml DOCTYPE中的PUBLIC和后面的SYSTEM声明。

那么我们只用这样写,便可以输出符合标准的html/xhtml文档了:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl
="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes" doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system
="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
<xsl:template match="root">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Index</title>
</head>
<body>
<h1>
<xsl:value-of select="greeting"/>
</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

看似一切都搞定了,也没有多少东西,但事实上并不是这样的。因为可能我们想要把产品列表放到一个文档中,评论信息又放入一个文档中,然后还要把它们合并成为一个文档。大多数情况下我们是没有一个现成的xml文档的。那些东西也是要动态生成的。我们还可能需要复杂的选择运算等等。。。

还有就是,本来网站上使用了点ajax对SEO就有点不太友好了,再加入xml/xslt这东东,网站的SEO怎么顾全呢?

下接着会看看多文档合并的问题,接着是解决SEO问题。。。总之,会把如何使用xslt制作符合标准的网站告诉您。而且还要提前告诉您下,虽然接下来要在服务器端使用xslt,但我们已经可以摆脱WebForm的page以提升性能,再加上所有跟数据、样式、HTML相关的内容都是纯文本的,并没有丝毫编译到DLL中去,也将大大方便将来对网站的维护。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NETMVC图片管理(更新)发布时间:2022-07-10
下一篇:
对ASP.NET失去学习的方向发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap