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

转载于:https://www.cnblogs.com/LongDescription/p/4208690.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值