xsl:if test = something and something

时间:2010-12-17 21:33:03

标签: xml xslt

我试图弄清楚如何在XSL if语句中测试满足2个条件。

 <xsl:if test="NewDataSet/CallMetrics/CallsinQueue &lt; 10 
               and NewDataSet/CallMetrics/CallsinQueue &gt; 10">
      <xsl:attribute name="bgcolor">#009900</xsl:attribute>
 </xsl:if>

2 个答案:

答案 0 :(得分:2)

对于包括10

在内的所有值,您的测试条件将返回false
 x   x<10   x>10   x<10 & x>10
---  ----   ----   -----------
 8   true   false     false
10   false  false     false
12   false  true      false

也许您打算使用or代替and

编辑:如果NewDataSet/CallMetrics/CallsinQueue是一系列节点,则一般比较规则规定如果任何节点的值满足条件,则每个比较将返回true。因此,只有当序列包含一个或多个值为&lt;的节点时,整个表达式才为真。 10和一个或多个值> gt的节点10.这似乎不是预期的。

答案 1 :(得分:0)

如果您正在尝试检查CallMetrics是否包含值小于10的CallsInQueue和值大于10的CallsInQueue,那么应该这样做:

<xsl:if test="NewDataSet/CallMetrics[CallsinQueue &lt; 10] 
               and NewDataSet/CallMetrics[CallsinQueue &gt; 10"]>
      <xsl:attribute name="bgcolor">#009900</xsl:attribute>
</xsl:if>

[...]运算符检查是否存在与指定条件匹配的节点。