一、什么是XSLT
XSLT是一种用于将XML文档转换任意文本的描述语言,简单来说就是xml通过xslt可以被转化成xhtml,html等w3c规范的
格式文件
。它是XSL(eXtensible Stylesheet Language)规范的一部分。
XSLT 1.0
支持的五种数据类型
number、boolean、string、node-set、tree
相互之间的转化
到 从 | boolean | number | string | node-set | tree |
boolean | / | false -> 0 true -> 1 | false -> ‘false’ true -> ‘true’ | 不允许 | 不允许 |
number | 0 -> false 非0-> true | / | 转化为十进制数 | 不允许 | 不允许 |
string | null-> false 其他 -> true | 解析为十进制 | / | 不允许 | 不允许 |
node-set | empty -> false 其他 -> true | 通过string转化 | 文档顺序中第一个节点的字符串值 | / | 不允许 |
tree | 通过string转化 | 通过string转化 | 连接所有的文本节点 | 不允许 | / |
说明:
Tree很少见,只有在xsl:variable中才出现。xslt2.0已经取消该类型。另外,转化为node-set,标准xslt1.0不提供,但是扩展接口通常都是提供的。比如微软提供了msxsl:node-set。
从一个原始的 XML 文档开始
我们现在要把下面这个 XML 文档("cdcatalog.xml")转换为 XHTML:
<?xml version="1.0" encoding="ISO-8859-1"?> <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 样式表("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>
把 XSL 样式表链接到 XML 文档
向 XML 文档("cdcatalog.xml")添加 XSL 样式表引用:
<?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></pre><br />
如果您使用的浏览器兼容 XSLT,它会很顺利地把您的 XML 转换为 XHTML。