XML

XML 知识量:7 - 28 - 99

5.6 XSL节点的输出><

输出中单条件判断- 5.6.1 -

除了访问节点,XSL还可以控制节点的输出方式,例如:加入条件判断、排序等功能。

输出中单条件判断通过<xsl:if>元素来实现,目的是对XML中的数据进行过滤,其语法如下:

<xsl:if test="测试条件">
    ......
</xsl:if>

其中:

  • <xsl:if>是单条件判断的开始标记,</xsl:if>是结束标记。

  • test属性用于指定测试条件。满足条件时将继续转换开始标记后的内容,不满足条件时将忽略后面的内容。

输出中多条件判断- 5.6.2 -

输出中多条件判断通过使用<xsl:choose>和它的两个子元素<xsl:when>和<xsl:otherwise>来实现,其语法如下:

<xsl:choose>
    <xsl:when test="测试条件1">
        ......
    </xsl:when>
    <xsl:when test="测试条件2">
        ......
    </xsl:when>
    ......
    <xsl:otherwise>
        ......
    </xsl:otherwise>
</xsl:choose>

其中:

  • <xsl:choose>是多条件判断的开始标记,</xsl:choose>是结束标记。

  • 可以有多个<xsl:when>子元素,满足其test条件时,执行对应<xsl:when>子元素后面的内容,然后不再执行其他判断,跳出<xsl:choose>标记。

  • 没有满足任何<xsl:when>子元素的条件时,执行<xsl:otherwise>子元素后面的内容。

对输出结果进行排序- 5.6.3 -

对输出结果进行排序通过使用<xsl:sort>元素来实现。其属性如下:

  • select属性:设置排序的关键字。

  • order属性:设置排序的次序,ascending为升序,descending为降序。

  • data-type属性:设置排序是否按数字或文本进行排序,number为数字,text为文本。

在默认情况下,<xsl:sort>元素按照关键字的字母顺序进行排序。同时存在多个<xsl:sort>元素时,首先按照第一个关键字进行排序,然后是第二个,以此类推。

<xsl:sort>可以作为<xsl:apply-templates>或<xsl:for-each>的子元素,下面的示例对员工按照年龄由大到小排列输出:

<xsl:apply-templates select="员工">
    <xsl:sort select="年龄" order="descending"/>
</xsl:apply-templates>