你能在xslt测试属性中加入两个条件吗?

时间:2008-11-25 21:09:26

标签: xslt

这是否适用于4< 5和1< 2?

<xsl:when test="4 &lt; 5 AND 1 &lt; 2" >
<!-- do something -->
</xsl:when>

4 个答案:

答案 0 :(得分:200)

不完全是,AND必须是小写的。

<xsl:when test="4 &lt; 5 and 1 &lt; 2">
<!-- do something -->
</xsl:when>

答案 1 :(得分:32)

它必须包含在&lt; xsl:choose&gt;中因为这是一个时间。并小写“和”。

<xsl:choose>
   <xsl:when test="4 &lt; 5 and 1 &lt; 2" >
   <!-- do something -->
   </xsl:when>
   <xsl:otherwise>
   <!-- do something else -->
   </xsl:otherwise>
</xsl:choose>

答案 2 :(得分:6)

来自XML.com

  

与xsl类似:if指令,xsl:when   元素可以更精细   他们的开始和之间的内容   结束标记 - 例如,文字结果   元素,xsl:元素元素,或   甚至xsl:if和xsl:选择elements-to   添加到结果树。他们的考验   表达式也可以使用全部   xsl:if的技巧和操作符   element的test属性可以使用,例如   as和,和,以及函数调用   构建更复杂的布尔值   表达式。

答案 3 :(得分:5)

也许对于xslt-professional来说这是一个明智的选择,但对于初学者/中级水平的人来说,这让我感到困惑。我想做同样的事情,但我必须从xml而不是普通数字测试响应时间值。在这个帖子之后,我尝试了这个:

<xsl:when test="responsetime/@value &gt;= 5000 and responsetime/@value &lt;= 8999"> 

生成错误。这有效:

<xsl:when test="number(responsetime/@value) &gt;= 5000 and number(responsetime/@value) &lt;= 8999">

但是,如果没有number(),不明白为什么它不起作用。可能是没有number(),该值被视为字符串,你不能将数字与字符串进行比较?

无论如何,希望这可以节省很多人的搜索......