您可以在 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 &lt; 5 AND 1 &lt; 2" >
<!-- do something -->
</xsl:when>

【问题讨论】:

运算符和优先级:msdn.microsoft.com/en-us/library/ms256081(VS.85).aspx 【参考方案1】:

也许这对于 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()的值被当成一个字符串,你就不能比较数字和字符串了?

无论如何,希望这可以为某人节省大量搜索...

【讨论】:

【参考方案2】:

它确实必须包含在 中,因为它是一个时间。并且小写“and”。

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

【讨论】:

【参考方案3】:

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

<xsl:when test="4 &lt; 5 and 1 &lt; 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 测试属性中添加两个条件吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 app.config 文件中添加条件吗?

您可以在 lambda 函数中添加条件吗?

XSLT 可以插入当前日期吗?

Swagger.json 到 xslt 转换器

您可以在 if 语句中使用 2 个或更多 OR 条件吗? [复制]

我可以使用 XSLT 将 OpenOffice ODT 内容 (content.xml) 转换为 HTML 吗?