1.简介
XSLT(XML StyleSheet Language Transformations)扩展样式表转换语言,用于将XML文档转换为其它类型的文本文档,如HTML。
它起始于XSL(XML StyleSheet Language),结束于XSLT、XPath以及XSL-FO。
XSL对于XML就相当于CSS对于HTML。XSL包含三个部分:XPath、XSLT、XSL-FO。
XPath:一种用于在 XML 文档中导航的语言。
XSL-FO:一种用于格式化 XML 文档的语言。
2.工作原理
XSLT使用XPath在XML文档中查找信息,通过添加,删除或者重新排列元素的方式把源XML转化为目标文档。
3.使用
--先看一个例子,将下述两个文件放在同一目录下,用浏览器打开。
cdcatalog.xsl
<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <h2>My CD Collection</h2> <table border="1"> <tr bgcolor="#9acd32"> <th align="left">Title</th> <th align="left">Artist</th> </tr> <xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
cdcatalog.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?> <catalog> <cd> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <price>10.90</price> <year>1985</year> </cd> </catalog>
--分析
XSL文件一般以xsl作为后缀,实质为一XML文件。
根元素
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
或者
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
XML使用对应的XSLT需要进行引用,方法如下。
<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>
--几个重要的XSL元素
----<xsl:template>
用于构建模板,XSL由一个或多个模板规则组成。
match属性用于关联XML元素和模板,值为XPath表达式,如"/"代表整个文档。
即通过match属性确定对XML中的某个元素应用某套模板规则。
----<xsl:value-of>
用于提取某个选定节点的值,并把对应的值输出都结果文档中。
select属性用于定位节点,为一XPath表达式,以"/"开头时表示绝对位置,否则表示相对位置。
----<xsl:for-each>
用于在XSLT中进行循环。
select属性用于定位要循环的目标节点,为一XPath表达式,可以使用XPath进行过滤。
----<xsl:sort>
位于<xsl:for-each>内部,用于对列表进行排序。
select属性指示需要排序的XML元素,为一XPath表达式。
----<xsl:if>
用于条件判断
test属性为条件表达式,如price > 10表示price元素的值大于10
----<xsl:choose><xsl:when><xsl:otherwise>
相当于if...else if...else...,用于多重条件判断。
xls:when中的test元素为条件表达式。
----<xsl:apply-templates>
用于把一个模板应用于当前的元素或者当前元素的子节点
select用于指定要处理的节点。
通常用于结构化XSL文件。
----<xsl:variable>
用于声明局部或全局的变量
如果被声明为顶层元素,则该变量是全局的,而如果在模板内声明,则变量是局部的
name属性为变量名
select属性为变量值,也可通过<xsl:value-of/>等方式的文本节点来对其赋值。
--<xsl:variable name="id" select="'test'"/>
--<xsl:variable name="id">
<xsl:value-of select="Product/Id"/>
</xsl:variable>
获取值时在变量名前加一个$即可
<xsl:value-of select="substring($id,3)"/>
----<xsl:copy-of>
创建当前节点的一个副本,当前节点的 Namespace 节点、子节点以及属性都会被自动复制
select属性,必须,指定要COPY的节点。
----使用时可使用XSLT内置函数和XPath函数。
4.参考资料
http://www.w3school.com.cn/xsl/