您可以在 xslt 测试属性中添加两个条件吗?
Posted
技术标签:
【中文标题】您可以在 xslt 测试属性中添加两个条件吗?【英文标题】:Can you put two conditions in an xslt test attribute? 【发布时间】:2010-09-24 01:11:10 【问题描述】:这适用于When 4
<xsl:when test="4 < 5 AND 1 < 2" >
<!-- do something -->
</xsl:when>
【问题讨论】:
运算符和优先级:msdn.microsoft.com/en-us/library/ms256081(VS.85).aspx 【参考方案1】:也许这对于 xslt 专业人士来说是显而易见的,但对于初学者/中级水平的我来说,这让我感到困惑。我想做完全相同的事情,但我必须测试来自 xml 而不是纯数字的响应时间值。在这个线程之后,我尝试了这个:
<xsl:when test="responsetime/@value >= 5000 and responsetime/@value <= 8999">
这产生了一个错误。这有效:
<xsl:when test="number(responsetime/@value) >= 5000 and number(responsetime/@value) <= 8999">
不过,我真的不明白为什么没有 number() 就不能工作。会不会是没有number()的值被当成一个字符串,你就不能比较数字和字符串了?
无论如何,希望这可以为某人节省大量搜索...
【讨论】:
【参考方案2】:它确实必须包含在
<xsl:choose>
<xsl:when test="4 < 5 and 1 < 2" >
<!-- do something -->
</xsl:when>
<xsl:otherwise>
<!-- do something else -->
</xsl:otherwise>
</xsl:choose>
【讨论】:
【参考方案3】:不完全是,AND 必须是小写的。
<xsl:when test="4 < 5 and 1 < 2">
<!-- do something -->
</xsl:when>
【讨论】:
【参考方案4】:来自XML.com:
像 xsl:if 指令,xsl:when 元素可以有更精细的 他们的开始和之间的内容 结束标签——例如,文字结果 元素,xsl:element 元素,或 甚至 xsl:if 和 xsl:choose 元素——to 添加到结果树。他们的测试 表达式也可以使用所有 xsl:if 的技巧和运算符 元素的 test 属性可以使用,比如 as and, or, and 函数调用, to 构建更复杂的布尔值 表达式。
【讨论】:
以上是关于您可以在 xslt 测试属性中添加两个条件吗?的主要内容,如果未能解决你的问题,请参考以下文章