XSLT个人摘录

来源:互联网 发布:大陆没有言论自由 知乎 编辑:程序博客网 时间:2024/06/05 19:25

先了解一下XSLT:

XSLT中的T代表英语中的“转换”(Transformation)。它是XSLeXtensible Stylesheet Language)规范的一部分。

XSLT用于将一种XML文档转换为另外一种XML文档,或者可被浏览器识别的其他类型的文档,比如HTML和XHTML。

XSLT是W3C标准:XSLT在1999年11月16日被确立为W3C标准。

应用功能:

(1)、将数据和表达形式分离。就象天气预报的信息可以显示在不同的设备上,电视,手机或者其它。

(2)、在不同的应用之间传输数据将XML转换为HTML,是XSLT最主要的功能。

XSL划分:

XSL在转换XML文档时分为明显的两个过程,第一转换文档结构;其次将文档格式化输出。这两步可以分离开来并单独处理,因此XSL在发展过程中逐渐分裂为XSLT(结构转换)和XSL-FO(formattingobjects)(格式化输出)两种分支语言,其中XSL-FO的作用就类似CSS在HTML中的作用。

XML是一个完整的树结构文档在转换XML文档时可能需要处理其中的一部分(节点)数据和查找,如何查找和定位XML文档中的信息呢,XPath就是一种专门用来在XML文档中查找信息的语言。

XSLT与css的比较

CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT,因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是:
(1)CSS不能重新排序文档中的元素;
(2)CSS不能判断和控制哪个元素被显示,哪个不被显示;
(3)CSS不能统计计算元素中的数据;
简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。
XSLT的组合使用



如果您的浏览器支持 XSLT,那么在浏览器中它可被用来将文档转换为 XHTML。
在客户端,通过使用 JavaScript,我们可以:
进行浏览器确认测试
根据浏览器和使用者的需求来使用不同的样式表
在客户端把 XML 文件转换为 XHTML 的javascript源代码示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<html>
<body>
<scripttype="text/javascript">
//LoadXML
varxml=newActiveXObject("Microsoft.XMLDOM")
xml.async=false
xml.load("xml文件的路径")
//LoadXSL
varxsl=newActiveXObject("Microsoft.XMLDOM")
xsl.async=false
xsl.load("xsl文件的路径")
//Transform
document.write(xml.transformNode(xsl))
</script>
</body>
</html>
代码说明:第一段JS代码创建了微软的 XML 解析器的一个实例,然后把 XML 文件载入了内存。第二段代码创建了解析器的另一个实例,然后把这个 XSL 文件载入了内存。最后一行代码使用 XSL 文档转换了 XML
文档,并在浏览器中把结果作为 XHTML 显示出来。任务完成!

XSLT在服务器端

由于并非所有的浏览器都支持 XSLT,另一种解决方案是在服务器上完成 XML 至 XHTML 的转化。
在服务器上把 XML 文件转换为 XHTML 的ASP源代码示例:
<%
'Load XML
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))
'Load XSL
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))
'Transform file
Response.Write(xml.transformNode(xsl))
%>
代码说明:在ASP中,第一段代码创建了微软的 XML 解析器的一个实例,然后把 XML 文件载入了内存。第二段代码创建了解析器的另一个实例,然后把这个 XSL 文件载入了内存。最后一行代码使用 XSL 文档转换了 XML 文档,并把结果作为 XHTML 发送到您的浏览器。任务完成![1] 



0 0
原创粉丝点击