首页 > 代码库 > xsl和xml的使用总结

xsl和xml的使用总结

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="http://www.mamicode.com/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选取此节点的所有子节点。
/从根节点选取。
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.选取当前节点。
..选取当前节点的父节点。
@选取属性。

xsl和xml的使用总结