XSLT:写入始终为false的IF statement的最短方法


<xsl:if test="(1 &gt; 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给出的答案是唯一的正确答案,因为所使用的表达式已经是布尔值。否则,这将是一个应该出现在琐事比赛中的问题,而不是在这里。

相关内容

  • 没有找到相关文章

最新更新