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

xsl和xml的使用总结的相关文章

如何用XSL对XML的数据进行按节点排序?

今天工作当中,遇到一个问题,XML的Schema文件中定义的complexType是一个Sequence,这就要求符合这个Schema定义的XML的数据节点,必须要按照Schema中Sequence定义的顺序出现(etag-->id-->kind-->selfLink-->title-->updated),否则Schema校验将会出错.请见下图1和图2, 换句话说,在于XML的数据中节点的出现的顺序和必须和Schema中(节点的顺序是按照节点名字的字母升序排列)定义的顺序一致

XML学习笔记之:XSLT &lt;xsl:variable&gt; 元素

声明:该笔记引自W3School! 1.<xsl:variable> 元素用于声明局部或全局的变量. 2.可以通过 <xsl:variable> 元素的内容或通过 select 属性,向变量添加值! 3.一旦设置了变量的值,就无法改变或修改该值! <xsl:variable name="name" select="expression"> <!-- Content:template --> </xsl:varia

XSL样式的使用区别于XML的文本

这里使用加上前缀的XSL与XML进行区别 <?xml version = "1.0" encoding = "ISO-8859-1"?> <xsl:stylesheet version = "1.0" xmlns:xsl = "http://www.w3g.org/1999/XSL/Transform"> <xsl:template match = "/"> <ht

ASP.NET 动态查找数据 并且生成xml文档 同时使用xslt转换为xhtml

前言 xsl是一门标签解析语言,很适合做动态网页的前台标签 www.bamn.cn 1 首先是aspx页面 添加一个输入框 按钮 还有一个用来显示解析后的xhtml代码的控件 <form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server" TextMode="MultiLine"

11.C#操作XML

1..NET对读写XML文件的支持 (1)System.Xml命名空间 System.Xml命名空间为处理XML提供基于标准的支持,其中提供了许多管理XML文档和XML流方式的类,还提供了一些类(例如XmlDataDocument)则是提供了XML数据存储器和存储在DataSet中的关系数据之间的桥梁. 以下是System.Xml命名空间读写XML较重要的类: XmlReader       表示提供XM数据进行快速.非缓存.只进访问的读取器. XmlWriter       提供一种快速.非缓

XML 文档和数据

.NET Framework 4.5 其他版本 .NET Framework 提供了一组全面而集成的类,可用来方便地生成可以识别 XML 的应用程序. 通过以下命名空间中的类,可以分析和编写 XML,编辑内存中的 XML 数据,进行数据验证以及 XSLT 转换. System.Xml System.Xml.XPath System.Xml.Xsl System.Xml.Schema System.Xml.Linq 有关完整列表,请参阅 System.Xml 命名空间网页. 这些命名空间中的类支持

XML学习3:XML基本语法(二)

三XML属性 XML元素可以在开始标签中包含属性,类似HTML.属性(Attribute)提供关于元素的额外(附加)信息. XML属性基本语法:<元素 属性1="属性值" 属性2="属性值">元素内容</元素> 注意事项: 1)属性值用双引号(")或单引号(')分隔(如果属性值中有',用"分隔:有",用'分隔). 2)一个元素可以有多个属性. 3)属性名称在同一个元素标记中只能出现一次. 4)属性值不能包括<

XSL简单实例

利用xsl可以做到将数据和格式完全分离,下面比较一个xml+css和xml+xsl的区别. XML + css resume.xml文件内容如下: 1 <?xml version="1.0" encoding="GB2312"?> 2 <?xml-stylesheet type="text/css" href="resume.css"?> 3 <resume> 4 <name>禹

XSL基础教程(一)

XSL(eXtensible Style sheet Language),即可扩展样式表语言,是XML的亲密伙伴.要学习好XML,不能不掌握XSL.本文就向你全面讲述XSL的一切一切: XSL介绍:介绍XSL是XML的样式表语言,XSL是什么以及它能做什么. XSL介绍: XML的样式表语言XSL比CCS要复杂得多. CSS:HTML的样式表语言: 由于HTML使用预先确定的标记,因此这些标记的含义都很好理解:<p>元素定义一段,<h1>元素定义一个标题.浏览器知道如何显示这些元素