可以在 xslt 测试属性中加入两个条件吗?

这对于 When 4 < 5和1 < 2是正确的吗?

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

来自 XML.com:

像 xsl: if 指令,xsl: when 元素可以有更复杂的 内容之间的开始-和 结束标记ーー例如,文字结果 元素、 xsl: element 元素或 If 和 xsl: select 元素ー to 他们的测试 表达式也可以使用所有 和运算符,因此 xsl: if 元素的 test 属性可以使用,例如 和,或者,和函数调用 构建更复杂的布尔型 表情。

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

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

它必须包装在 < xsl: select > 中,因为它是一个 when。

<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>

对于 xslt 专业人士来说,这可能是显而易见的,但对于初级/中级水平的我来说,这让我感到困惑。我想做完全相同的事情,但是我必须测试来自 xml 的 response time 值,而不是一个普通的数字。根据这个帖子,我试了这个:

<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 ()这个值就被当作一个字符串来处理,你不能把数字和字符串进行比较?

不管怎样,希望这能帮助别人省去很多搜索..。