何时使用xsl:if和when何时使用xsl:select / xsl:在XSLT中

时间:2013-09-11 13:45:01

标签: xslt

我知道这可能看起来像一个愚蠢/新手的问题,但我对 XSLT 相当新(虽然我开始接触它并看到它的功能)。

何时使用 xsl:if 以及何时使用 xsl:choose / xsl:when

我一直在使用choose / when /否则我想要一个“else”选项。它是否正确?

例如我有一些我正在做的地方:

<xsl:choose>
  <xsl:when test="count(entry) != 0">
    put positive outcome here
  </xsl:when>
  <xsl:otherwise>
    put something else here
  </xsl:otherwise>
</xsl:choose>

会xsl:如果更好吗?

感谢您的投入。

2 个答案:

答案 0 :(得分:6)

对于您只想测试表达式是否为true的简单情况,请使用xsl:if。 (请注意,没有相应的xsl:else。)

<xsl:if test="expression">
    output if the expression is true
</xsl:if>

如果表达式为false,则使用xsl:choose表示有备用输出的情况。

<xsl:choose>
    <xsl:when test="expression">
        output if the expression is true
    </xsl:when>
    <xsl:otherwise>
        output if the expression is false
    </xsl:otherwise>
</xsl:choose>

答案 1 :(得分:3)

  

会xsl:如果更好吗?

不是真的 - 除非你想要两个xsl:if并确保他们的条件相互排斥。

xsl:choose将始终精确选择一个可用的xsl:whenxsl:otherwise

  

<xsl:when>元素的<xsl:choose>子元素按从上到下的顺序进行测试,直到其中一个元素的测试属性准确描述源数据中的条件,或者直到{{达到1}}元素。选择<xsl:otherwise><xsl:when>元素后,将退出<xsl:otherwise>块。不需要明确的中断或退出声明。

它非常类似于来自C语言(C,C ++,Java,C#)的<xsl:choose>语句或来自Visual Basic的Select...Case

xsl:if没有等同于switch条款的此类语言的等价物,所以我只推荐它,如果你想做“某事”或不做(也就是说case,你不想指定替代方案)