2

我知道这似乎是一个愚蠢/新手的问题,但我对XSLT 还很陌生(尽管我开始接触它并了解它的功能)。

什么时候适合使用xsl:if什么时候适合使用xsl:choose/xsl:when

当我想要一个“其他”选项时,我一直在使用选择/何时/否则。这个对吗?

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

<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:if 会更好吗?

感谢您的输入。

4

2 回答 2

6

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

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

用于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>
于 2013-09-11T14:00:10.577 回答
4

xsl:if 会更好吗?

不是真的 - 除非你想拥有两个xsl:ifs 并确保它们的条件是互斥的。

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

元素的<xsl:when><xsl:choose>元素按从上到下的顺序进行测试,直到其中一个元素上的测试属性准确地描述了源数据中的条件,或者直到<xsl:otherwise>到达某个元素。一旦选择了一个<xsl:when>or<xsl:otherwise>元素,该<xsl:choose>块就退出了。不需要显式的 break 或 exit 语句。

switch它与受 C 语言启发的语言(C、C++、Java、C#)或Select...CaseVisual Basic中的语句非常相似

Thexsl:if不具有此类语言的else子句等效项,因此我仅在您想做“某事”或不做“某事”时才推荐它(即,在这种情况下,您不想指定替代方案)

于 2013-09-11T13:58:56.830 回答