<xsl:if test="<XPATH to boolean value here>"> ... </xsl:if>
总是回归真实?
由于boolean在定义时可以是0,1,“false”和“true”,因此测试布尔值的唯一方法是对这些进行字符串比较.这不可能是对的.
<xsl:if test="<XPATH to boolean value here>"> ... </xsl:if>
总是回归真实?
由于boolean在定义时可以是0,1,“false”和“true”,因此测试布尔值的唯一方法是对这些进行字符串比较.这不可能是对的.
<xsl:if test="/path/to/foo">
总是评估为真,因为你在那个测试中真正要求的是“这个元素是否存在?”而不是“元素的价值是真的吗?”元素存在.
布尔值必须为true,false,1或0的规则是XML Schema(which see)的一部分,而不是XPath,它对此规则一无所知. (XPath 1.0,即XPath 2.0 / XQuery 1.0具有the fn:boolean
function,它具有智能,即XML Schema感知,评估布尔值.)要确定XSLT中的值是否为真,您必须明确检查它:
<xsl:if test="/path/to/foo = 'true' or /path/to/foo = '1'">