<xsl:if test="(1 > 2)">
</xsl:if>
有什么较短的吗?尝试了(false)
和('false')
,但没有运气。
你几乎在那里。这是使用布尔值的正确方法:
<xsl:when test="false()">
它比您的解决方案短一些,但我不会说这里的简洁很重要。相反,使用布尔值进行真实测试是一种清洁剂解决方案,而不是利用数字比较的"副作用"。
有关如何在XSLT中创建布尔值的更多信息,请参见此答案。
为了说明这一点,假设以下
XML输入
<?xml version="1.0" encoding="utf-8"?>
<root/>
样式表
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/root">
<xsl:choose>
<xsl:when test="false()">
<xsl:copy/>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
如果将false()
更改为true()
,则root
元素已输出。
MathiasMüller的答案是正确且内容丰富的,但是从纯粹的potantic角度来看(您确实要求进行最短的false评估XSL:如果语句!),您可以这样做:
<xsl:if test="1=0">
它总是会评估为false,尽管我不确定这是什么意义...
最短的术语?表达式的弦长?尝试:
<xsl:if test="''">
还是您必须输入的字符数?尝试:
<xsl:if test="0">
或您是指所需的评估数量 - 恕我直言,这是这里唯一要提出的合法问题。如果是这种情况,那么MathiasMüller给出的答案是唯一的正确答案,因为所使用的表达式已经是布尔值。否则,这将是一个应该出现在琐事比赛中的问题,而不是在这里。