您的位置:首页 > 其它

W3School——XSL学习笔记

2015-09-11 12:12 246 查看
这段时间用到HTML,XSL,XML,先把XSL语言大概看了一下,W3School是一个很好的网站,非常值得收藏,总结了XSL的一些基础知识,详细的都可以在这里找到。

XSL 指扩展样式表语言(EXtensible Stylesheet Language)。

发展 XSL 的原因是:存在着对于基于 XML 的样式表语言的需求。

XSL 包括三部分:

XSLT:用于转换 XML 文档的语言。

XPath:用于在 XML 文档中导航的语言。

XSL-FO:用于格式化 XML 文档的语言。

XSLT = XSL 转换(XSL Transformations)。

XSLT 是 XSL 中最重要的部分。

XSLT 用于将一种 XML 文档转换为另外一种 XML 文档,或者可被浏览器识别的其他类型的文档,比如 HTML 和 XHTML。通常,XSLT 是通过把每个 XML 元素转换为 (X)HTML 元素来完成这项工作的。

XSLT 使用 XPath 在 XML 文档中查找信息。XPath 被用来通过元素和属性在 XML 文档中进行导航。

<xsl:template> 元素

<xsl:template> 元素用于构建模板。

match 属性用于关联 XML 元素和模板。match 属性也可用来为整个文档定义模板。match 属性的值是 XPath 表达式(举例,match="/" 定义整个文档)。如下所示:

<xsl:template match="/">
    <html>
    <body>
        <table border="1">
            <tr>
                <th>Title</th>
                <th>Artist</th>
            </tr>
            <tr>
                <td>.</td>
                <td>.</td>
            </tr>
        </table>
    </body>
    </html>
</xsl:template>
结果如下:

Title Artist

. .

此例的缺点:数据没有从 XML 文档被拷贝到输出结果(表格第二行中只是两个点))。

<xsl:value-of> 元素

<xsl:value-of> 元素用于提取某个选定节点的值,并把值添加到转换的输出流中。如下所示:

<tr>
<td><xsl:value-of select="C/cd/title"/></td>
<td><xsl:value-of select="C/cd/artist"/></td>
</tr>
结果如下:

Title Artist

Jay Jay Chou

select 属性的值是一个XPath表达式,此表达式的类似于文件系统。

此例的缺点:仅仅只有一行数据从XML文档被拷贝到输出结果

<xsl:for-each> 元素

<xsl:for-each> 元素可用于选取指定的节点集中的每个 XML 元素。如下所示:

<pre name="code" class="html"><xsl:for-each select="C/cd">
<tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>


这个代码可以循环遍历XML元素,并显示所有记录。此外,如果在<xsl:for-each>元素中添加一个选择属性的判别式,可以过滤从XML文件输出的结果。如下所示:
<xsl:for-each select="C/cd[title='Fantasy']">
<tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
合法的过滤运算符:

= 等于

!= 不等于

< 小于

> 大于

<xsl:sort> 元素

<xsl:sort> 元素用于对结果进行排序。如下所示:

<xsl:for-each select="C/cd/">
<xsl:sort select="artist"/>
<tr>
    <td><xsl:value-of select="title"/></td>
    <td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
其中,select属性指示需要排序的XML元素。

<xsl:if> 元素

<xsl:if> 元素用于放置针对XML文件内容的条件测试。

如果需要放置针对XML文件内容的条件测试,请向XSL文档添加<xsl:if>元素。语法如下所示:

<xsl:if test="expression">
...
...如果条件成立则输出
...
</xsl:if>
输出CD中price大于10的元素:

<xsl:for-each select="C/cd">
<xsl:if test="price > 10">
    <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="artist"/></td>
    </tr>
</xsl:if>
</xsl:for-each>
必须的test属性的值包含了需要求值的表达式。

<xsl:choose> 元素

<xsl:choose> 元素用于结合 <xsl:when> 和 <xsl:otherwise> 来表达多重条件测试。语法如下所示:

<xsl:choose>
    <xsl:when test="expression">
        ...输出...
    </xsl:when>
    <xsl:otherwise>
        ...输出...
    </xsl:otherwise>
</xsl:choose>
如果需要插入针对XML文件的多重条件测试,请向XSL文件添加 <xsl:choose>、<xsl:when>以及<xsl:otherwise>。如下所示:

<td><xsl:value-of select="title"/></td>
<xsl:choose>
    <xsl:when test="price > 10">
        <td bgcolor="#ff00ff"><xsl:value-of select="artist"/></td>
    </xsl:when>
    <xsl:when test="price > 9">
        <td bgcolor="#cccccc"><xsl:value-of select="artist"/></td>
    </xsl:when>
    <xsl:otherwise>
        <td><xsl:value-of select="artist"/></td>
    </xsl:otherwise>
</xsl:choose>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: