XSLT

编辑

在计算机科学中,XSLT是 扩展样式表转换语言 的外语缩写,这是一种对XML(标准通用标记语言的子集)文档进行转化的语言,XSLT中的T代表英语中的“转换”(Transformation)。它是XSL(eXtensible Stylesheet Language)规范的一部分。

PHP中文网词条详解基本简介

XSLT是一种用于将XML文档转换任意文本的描述语言。

XPath是一种用于在XML文档中进行导航的语言。

XSLT指XSL转换(XSLTransformations)。

XSLT是XSL中最重要的部分。

XSLT可将一种XML文档转换为另外一种文本文件形式。

XSLT使用XPathXML文档中进行导航。

XPath是一个W3C标准。

XSLT=XSL转换。

XSLT用于将一种XML文档转换为另外一种XML文档,或者可被浏览器识别的其他型的文档,比如HTML和XHTML。通常,XSLT是通过把每个XML元素转换为(X)HTML元素来完成这项工作的。通过XSLT,您可以向或者从输出文件添加或移除元素和属性。您也可重新排列元素,执行测试并决定隐藏或显示哪个元素。描述转化过程的一种通常的说法是,XSLT把XML源树转换为XML结果树。

XSLT使用XPath:XSLT使用XPathXML文档中查找信息。XPath被用来通过元素和属性XML文档中进行导航。在转换过程中,XSLT使用XPath来定义源文档中可匹配一个或多个预定义模板的部分。一旦匹配被找到,XSLT就会把源文档的匹配部分转换为结果文档。

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

什么是 XSLT?

XSLT 指 XSL 转换(XSL Transformations)

XSLT 是 XSL 中最重要的部分

XSLT 可将一种 XML 文档转换为另外一种 XML 文档

XSLT 使用 XPathXML 文档中进行导航

XSLT 是一个 W3C 标准


XSLT = XSL 转换

XSLT 是 XSL 中最重要的部分。

XSLT 用于将一种 XML 文档转换为另外一种 XML 文档,或者可被浏览器识别的其他型的文档,比如 HTML 和 XHTML。通常,XSLT 是通过把每个 XML 元素转换为 (X)HTML 元素来完成这项工作的。

通过 XSLT,您可以向输出文件添加元素和属性,或从输出文件移除元素和属性。您也可重新排列并分元素,执行测试并决定隐藏或显示哪个元素,等等。

描述转化过程的一种通常的说法是,XSLT 把 XML 源树转换为 XML 结果树。


XSLT 使用 XPath

XSLT 使用 XPathXML 文档中查找信息。XPath 被用来通过元素和属性XML 文档中进行导航。


它如何工作?

在转换过程中,XSLT 使用 XPath 来定义源文档中可匹配一个或多个预定义模板的部分。一旦匹配被找到,XSLT 就会把源文档的匹配部分转换为结果文档。

PHP中文网词条详解应用功能

XML是一种电脑程序间交换原始数据的简单而标准的方法。它的成功并不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。因为XML满足了两个基本的需求:

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

(2)、在不同的应用之间传输数据。电子商务数据交换的与日俱增使得这种需求越来越紧迫。

为了使数据便于人们的阅读理解,需要将信息显示出来或者打印出来,例如将数据变成一个HTML文件,一个PDF文件,甚至是一段声音;同样,为了使数据适应不同的应用程序,必须有能够将一种数据格式转换为另一种数据格式,比如需求格式可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是用来实现这种转换功能的语言。将XML转换为HTML,是XSLT最主要的功能。

PHP中文网词条详解历史发展

和很多其他XML家族成员一样,XSLT是由W3C起草和制定的。

它的主要发展历程如下:

1995年由James Clark提议;

1997年8月正式提案为XSL;

1998年5月由Norman Walsh完成需求概要;

1998年8月18日XSL草案发布;

1999年11月16日正式发布XSL1.0推荐版本


PHP中文网词条详解XPath关系

XPath是XSLT的重要组成部分,XPath了解一下XSL系列的“家族”关系。

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

而这里重点讨论的是第一步的转换过程,也就是XSLT。

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

用一种比较好理解的解释:如果将XML文档看作一个数据库,XPath就是SQL查询语言;如果将XML文档看成DOS目录结构,XPath就是cd,dir等目录操作命令的集合。


PHP中文网词条详解CSS比较

CSS同样可以格式化XML文档,那么有了CSS为什么还需要XSLT,因为CSS虽然能够很好的控制输出的样式,比如色彩,字体,大小等,但是它有严重的局限性,就是:

(1)CSS不能重新排序文档中的元素;

(2)CSS不能判断和控制哪个元素被显示,哪个不被显示;

(3)CSS不能统计计算元素中的数据;

换句话说,CSS只适合用于输出比较固定的最终文档。CSS的优点是

简洁,消耗系统资源少;而XSLT虽然功能强大,但因为要重新索引XML结构树,所以消耗内存比较多。将它们结合起来使用,比如在服务器端用XSLT处理文档,在客户端用CSS来控制显示。可以减少响应时间。

PHP中文网词条详解基本元素

N:表示最早支持此标签的Netscape版本

IE:表示最早支持此标签的InternetExplorer版本

在IE5中所支持的元素可能出现非标准的行为,这是由于IE5发布于XSLT被确立为正式的W3C标准之前。

元素描述IEN

apply-imports应用来自导入样式表中的模版规则。6.0

apply-templates向当前元素或当前元素的子元素应用模板。5.06.0

attribute向元素添加属性。5.06.0

attribute-set创建命名的属性集。6.06.0

call-template调用一个指定的模板。6.06.0

choose与以及协同使用,来表达多重条件测试。5.06.0

comment在结果树中创建注释节点。5.06.0

copy创建当前节点的一个备份(无子节点及属性)。5.06.0

copy-of创建当前节点的一个备份(带有子节点及属性)。6.06.0

decimal-format定义当通过format-number()函数把数字转换为字符串时,所要使用的字符和符号。6.0

element在输出文档中创建一个元素节点。5.06.0

fallback假如处理器不支持某个XSLT元素,规定一段备用代码来运行。6.0

for-each遍历指定的节点集中的每个节点。5.06.0

if包含一个模板,仅当某个指定的条件成立时应用此模板。5.06.0

import用于把一个样式表中的内容倒入另一个样式表中。6.06.0

include把一个样式表中的内容包含到另一个样式表中。6.06.0

key声明一个命名的键。6.06.0

message向输出写一条消息(用于错误报告)。6.06.0

namespace-alias把样式表中的命名空间替换为输出中不同的命名空间。6.0

number测定当前节点的整数位置,并对数字进行格式化。6.06.0

otherwise规定元素的默认动作。5.06.0

output定义输出文档的格式。6.06.0

param声明一个局部或全局参数。6.06.0

preserve-space用于定义保留空白的元素。6.06.0

processing-instruction生成处理指令节点。5.06.0

sort对结果进行排序。6.06.0

strip-space定义应当删除空白字符的元素。6.06.0

stylesheet定义样式表的根元素。5.06.0

template当指定的节点被匹配时所应用的规则。5.06.0

text通过样式表生成文本节点。5.06.0

transform定义样式表的根元素。6.06.0

value-of提取选定节点的值。5.06.0

variable声明局部或者全局的变量。6.06.0

when规定元素的动作。5.06.0

with-param规定需被传入某个模板的参数的值。6.06.0

PHP中文网词条详解XSLT 高级

XSLT 在客户端

如果您的浏览器支持 XSLT,那么在浏览器中它可被用来将文档转换为 XHTML。

在客户端,通过使用 JavaScript,我们可以:

进行浏览器确认测试

根据浏览器和使用者的需求来使用不同的样式表

在客户端把 XML 文件转换为 XHTML 的javascript源代码示例:

<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 发送到您的浏览器。任务完成!

PHP中文网词条详解XML 编辑器

如果希望极认真地学习和使用 XML,那么您一定会从一款专业的 XML 编辑器的使用上受益。

XML 是基于文本的标记语言。

关于 XML 的一件很重要的事情是,XML 可被似记事本这样的简单的文本编辑器来创建和编辑。

不过,在您开始使用 XML 进行工作时,您很快会发现,使用一款专业的 XML 编辑器来编辑 XML 文档会更好。

EditPlus、NotePad 都是不错的选择。


PHP中文网词条详解XSLT浏览器

主要的浏览器均支持XML和XSLT。

MozillaFirefox:从1.0.2版本开始,Firefox就已开始支持XML和XSLT(以及CSS)。

Mozilla:Mozilla含有用于XML解析的Expat,并支持XML+CSS。Mozilla同样支持命名空间。Mozilla可执行XSLT。

Netscape:从版本8开始,Netscape就开始使用Mozilla引擎,

所以它对XML/XSLT的支持与Mozilla是相同的。

Opera:从版本9开始,Opera已开始支持XML和XSLT(以及CSS)。版本8仅支持XML+CSS。

Internet Explorer:从版本6开始,InternetExplorer已开始XML命名空间、CSS、XSLT以及XPath。版本5不兼容官方的W3CXSL标准。

参考资料
词条标签:
XSLT