您可以在xslt测试属性中放置两个条件吗?


Answers:


211

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

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

33

它确实必须包装在<xsl:choose>中,因为它是一个时间。和小写的“和”。

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

6

XML.com

像xsl:if指令一样,xsl:when元素可以在其开始标签和结束标签之间包含更详尽的内容(例如,文字结果元素,xsl:element元素甚至xsl:if和xsl:choose元素)结果树。他们的测试表达式还可以使用xsl:if元素的test属性可以使用的所有技巧和运算符(例如and和or以及函数调用)来构建更复杂的布尔表达式。


5

对于xslt专业人士来说,也许这是理所当然的事情,但是对于初学者/中级水平的我来说,这让我感到困惑。我想做完全相同的事情,但是我不得不从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()值被视为字符串,并且您无法将数字与字符串进行比较?

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.