XSLT学习笔记

XSL

XSL是(Extensible Style sheet Language)的缩写,是一种描述XML样式的语言。XML没有预先定义的标签,所以每个标签的寓意并不可知,XSL则用来描述XML文档如何展示。

XSL包含三部分的内容:

XSLTXML文档转换语言

XPathXML文档导航语言

XSL-FOXML文档格式语言

XSLT

XSLTXSL Transformations的缩写;用于将XML文档转换为XHTML文档或其它格式的文档;XSLTXSL的重要组成部分;XSLT使用XPath定位XML中的节点;XSLTW3C标准。

XSLT被用作转换XML文档成另一个XML文档,或者其它被浏览器所识别的文档,比如HTMLXHTML。通常XSLT做这些转换只需将每个XML节点转换为(X)HTML相应的节点。你能用XSLT增加/删除XML文档的节点或属性,也可以重排或排序节点,执行测试或决定某一节点是隐藏还是显示,等等。可以理解为将“XML源树”转换为“XML结果树”。

在转换的过程中,XSLT使用XPath来定义源文档的结构,源文档必须匹配一个或多个预定义的模板。当匹配成功是XSLT将转换源文档匹配的部分成结果文档。

根节点

<xsl:stylesheet><xsl:transform>都可以作为XSLT文档的根节点,

功能

定义文档为XLS样式表

属性
Xmlns:xsl

W3C官方指定的XSLT的命名空间为xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

Version

如果使用W3C官方指定的命名空间,则值需为version=”1.0”

示例

根据W3C标准,一个XSL样式表正确的定义为:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

Xsl:template元素

<xsl:template>标签用于定义模板

属性
Match

用于匹配XML源文档中的元素,也可以匹配整个XML文档。Match的值为XPath表达式(如 match=”/” 表示匹配整个XML文档)。

示例
<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  </body>
  </html>
</xsl:template>

 Xsl:value-of

元素
元素

 

<xsl:value-of>标签用于提取XML元素的值,并将它加入到输出文件中。

属性
Select

Select的值也为XPath表达式

用法
<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Artist</th>
    </tr>
    <tr>
      <td><xsl:value-of select="catalog/cd/title"/></td>
      <td><xsl:value-of select="catalog/cd/artist"/></td>
    </tr>
  </table>
  </body>
  </html>
</xsl:template>

 Xsl:for-each

元素
元素

 

<xsl:for-each>标签用于遍历指定的XML元素集合。

属性
Select

值为XPath表达式。我们也可以增加过滤条件

合法的过滤操作有:=(等于)  !=(不等于) &lt;(小于)  &gt;(大于)

用法
<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <td><xsl:value-of select="artist"/></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

 Xsl:sort

元素
元素

 

<xsl:sort>标签嵌入到<xsl:for-each>标签中使用,用于将指定的元素集合排序。

用法

 

 

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
      <xsl:sort select="artist"/>
      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="artist"/></td>
      </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

Xsl:if

元素 元素

 

 

 

语法格式<xsl:if test="expression">

  如果”expression”为真的输出结果

</xsl:if>

用法

 

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
      <xsl:if test="price &gt; 10">
        <tr>
          <td><xsl:value-of select="title"/></td>
          <td><xsl:value-of select="artist"/></td>
        </tr>
      </xsl:if>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

 Xsl:choose

元素 元素

 

 <xsl:choose>标签用于多条件判断,语法:

<xsl:choose>

  <xsl:when test="expression">

    ... some output ...

  </xsl:when>

  <xsl:otherwise>

    ... some output ....

  </xsl:otherwise>

</xsl:choose>

用法
 
<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>Title</th>
      <th>Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title"/></td>
      <xsl:choose>
        <xsl:when test="price &gt; 10">
          <td bgcolor="#ff00ff">
          <xsl:value-of select="artist"/></td>
        </xsl:when>
        <xsl:when test="price &gt; 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>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

 Xsl:apply-templates

元素
元素

 

 

 

<xsl:apply-templates>标签应用一个模板到当前节点或者子节点。如果我们增加”select”属性,它只处理Select所匹配的子节点,我们也可以select属性来定义子节点的处理顺序。

用法
<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
  <xsl:apply-templates/>
  </body>
  </html>
</xsl:template>
<xsl:template match="cd">
  <p>
  <xsl:apply-templates select="title"/>
  </p>
</xsl:template>
<xsl:template match="title">
  Title: <span style="color:#ff0000">
  <xsl:value-of select="."/></span>
  <br />
</xsl:template>

 

你可能感兴趣的:(html,xml,XHTML,嵌入式,XSL)