xsl 是 xml的样式表,类似 css和html的关系
xsl包含三部分:
1、xslt-用于转换xml
2、xpath-用于导航(遍历,选取节点)xml
3、xsl-fo-用于格式话xml
通过 XSLT,您可以向或者从输出文件添加或移除元素和属性。您也可重新排列元素,执行测试并决定隐藏或显示哪个元素,等等。
描述转化过程的一种通常的说法是,XSLT 把 XML 源树转换为 XML 结果树
举例来说明:
test.xml:
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <root> <student> <name>xiao mei</name> <stdno>2014201314</stdno> <school>shenzhen guangdong</school> </student> <teacher class="a"> <name>LiLy</name> <course>English</course> </teacher> <teacher class="a"> <name>Joy</name> <course>English</course> </teacher> <teacher class="b"> <name>Lucy</name> <course>Chinise</course> </teacher> </root>
test.xsl:
<?xml version="1.0" encoding="UTF-8"?> <xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- stylesheet 和 transform 可以相互替换 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> </xsl:stylesheet> --> <!-- <xsl:template> 元素定义了一个模板。而 match="/" 属性则把此模板与 XML 源文档的根相联系档--> <!-- <xsl:template match="//teacher"> --> <xsl:template match="/"> <html> <head></head> <body> <!-- 1、select 属性的值是一个 XPath 表达式 2、对select选取结果进行过滤:select="//student/stdno[@class="a"]" --> <table> <tr><td>stdno</td><td>name</td><td>school</td></tr> <tr> <td><xsl:value-of select="//student/stdno" /></td> <td><xsl:value-of select="//student/name" /></td> <td><xsl:value-of select="//student/school" /></td> </tr> </table> ------------------------------------------------------- <!-- Xpath表达式-参考W3school nodename 选取此节点的所有子节点。 / 从根节点选取。 // 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 . 选取当前节点。 .. 选取当前节点的父节点。 @ 选取属性。 --> <table> <tr><td>teacher name</td><td>teacher course</td></tr> <xsl:for-each select="//teacher[@class=‘a‘]"> <!-- 按照节点名称的值排序--> <xsl:sort select=‘name‘ /> <tr> <td><xsl:value-of select="name"/></td> <td><xsl:value-of select="course"/></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:transform>
在IE11浏览器中打开test.xml,可以看到test.xml的结果树输出,查看其源码,test.xml输出的为test.html中描述的html:
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-16"> </head> <body> <table> <tbody><tr><td>stdno</td><td>name</td><td>school</td></tr> <tr> <td>2014201314</td> <td>xiao mei</td> <td>shenzhen guangdong</td> </tr> </tbody></table> ------------------------------------------------------- <table> <tbody><tr><td>teacher name</td><td>teacher course</td></tr> <tr> <td>Joy</td> <td>English</td> </tr> <tr> <td>LiLy</td> <td>English</td> </tr> </tbody></table> </body></html>
可见,XSLT 把 XML 源树转换为 XML 结果树。
关于Xpath的使用,列出最常用的路径表达式,其他可查看其api:
表达式 | 描述 |
---|---|
nodename | 选取此节点的所有子节点。 |
/ | 从根节点选取。 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。 |
. | 选取当前节点。 |
.. | 选取当前节点的父节点。 |
@ | 选取属性。 |
时间: 2024-11-02 02:06:58