<xsl:choose> 元素

与 <xsl:otherwise> 元素和 <xsl:when> 元素一同测试多个条件。

<xsl:choose>
</xsl:choose>

元素信息

出现次数

无限制

父元素

xsl:attributexsl:commentxsl:copyxsl:elementxsl:fallbackxsl:for-eachxsl:ifxsl:messagexsl:otherwisexsl:paramxsl:processing-instructionxsl:templatexsl:variablexsl:whenxsl:with-param、输出元素

子元素

xsl:otherwisexsl:when

注释

将按照从上到下的顺序测试 <xsl:choose> 元素的 <xsl:when> 子级,直到其中一个元素上的 test 属性准确地说明源数据中的条件,或直到遇到 <xsl:otherwise> 元素。在选择了 <xsl:when> 或 <xsl:otherwise> 元素之后,将退出 <xsl:choose> 块。不需要明确的中断或退出语句。

对于简单条件测试,请使用 <xsl:if> 元素。

示例

以下示例显示 <order> 元素的模板,并在每个 <order> 的内容之前插入一个大小指示器。该大小指示器基于每个 <order> 元素中 <total> 元素的值。如果总计小于 10,则添加文本“(small)”。如果总计小于 20,则添加文本“(medium)”。如果总计大于等于 20,则添加文本“(large)”。

XML 文件 (order.xml)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="refchoose.xsl" ?>
<orders>
   <order>
      <lineitem/>
      <lineitem/>
      <total>9</total>
   </order>
   <order>
      <lineitem/>
      <lineitem/>
      <total>19</total>
   </order>
   <order>
      <lineitem/>
      <lineitem/>
      <total>29</total>
   </order>
</orders>

XSLT 文件 (refchoose.xsl)

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

<xsl:template match="order">
   <xsl:choose>
      <xsl:when test="total &lt; 10">
         (small)
      </xsl:when>
      <xsl:when test="total &lt; 20">
         (medium)
      </xsl:when>
      <xsl:otherwise>
         (large)
      </xsl:otherwise>
   </xsl:choose>
   <xsl:apply-templates />
   <BR/>
</xsl:template>

</xsl:stylesheet>

输出

(small) 9

(medium) 19

(large) 29