上一篇主要入门了 XSL,这一课来进一步学习XSL。

1 语法

(1) xsl:if 元素

语法:

1
2
3
4
5
<xsl:if test="expression">
  ...
  ...如果条件成立则输出...
  ...
</xsl:if>

如需添加有条件的测试,请在 XSL 文件中的 xsl:for-each 元素内部添加 xsl:if 元素。(下面的代码仅仅会输出价格等于 10 的 CD 的 title 和 artist 元素) 注:小于等于 可以组合起来使用。

      <xsl:for-each select="catalog/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>

(2) xsl:choose 元素

xsl:choose 元素用于结合 xsl:whenxsl:otherwise 来表达多重条件测试。可以理解成C语言里面的条件分支case when。 语法

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<xsl:choose>
  <xsl:when test="expression1">
    ... 输出 ...
  </xsl:when>
  <xsl:when test="expression2">
    ... 输出 ...
  </xsl:when>
  <xsl:otherwise>
    ... 输出 ....
  </xsl:otherwise>
</xsl:choose>

(3) xsl:apply-templates 元素

<xsl:apply-templates > 元素可把一个模板应用于当前的元素或者当前元素的子节点。

<xsl:apply-templates select="//fix/header/group" mode="fieldmode"/>
<xsl:template mode="fieldmode" match="group">

补充

xsl中 text() 与 . 的区别在于:text()是目前节点位置下的文本节点,而. 是取目前节点位置下所有层次的文本节点