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

joe*_*joe 120 xslt

这是正确的当4 <5和1 <2?

<xsl:when test="4 &lt; 5 AND 1 &lt; 2" >
<!-- do something -->
</xsl:when>
Run Code Online (Sandbox Code Playgroud)

phi*_*hag 204

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

<xsl:when test="4 &lt; 5 and 1 &lt; 2">
<!-- do something -->
</xsl:when>
Run Code Online (Sandbox Code Playgroud)


Aar*_*mer 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>
Run Code Online (Sandbox Code Playgroud)


Har*_*lby 6

来自XML.com:

像xsl:if instructions,xsl:when元素在其开始和结束标记之间可以有更复杂的内容 - 例如,文字结果元素,xsl:element元素,甚至xsl:if和xsl:选择要添加的元素结果树.他们的测试表达式也可以使用xsl:if元素的test属性可以使用的所有技巧和运算符,例如和,或和函数调用来构建更复杂的布尔表达式.


小智 5

对于xslt专业人士来说,也许这是理所当然的事情,但是对于初学者/中级水平的我来说,这让我感到困惑。我想做完全相同的事情,但是我不得不从xml而不是纯数字测试响应时间值。在此线程之后,我尝试了此操作:

<xsl:when test="responsetime/@value &gt;= 5000 and responsetime/@value &lt;= 8999"> 
Run Code Online (Sandbox Code Playgroud)

这产生了一个错误。这有效:

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

但是,真的不明白为什么没有number()也不行。可能是因为没有number()将该值视为字符串,并且您无法将数字与字符串进行比较?

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