Dim*_*hev 165
$ var变量的值定义如下:
<xsl:variable name="var" select="boolean('false')"/>
是
true()
这是因为在XPath中" false"是一个普通的字符串,而不是false(),它是boolean值的构造函数false()
XPath中的两个布尔值是(注意它们是构造的!):
true() 和 false()
将任何值转换为布尔值的细节在XPath规范中拼写出来:
" 布尔函数将其参数转换为布尔值,如下所示:
当且仅当它既不是正零或负零也不是NaN时,数字为真
当且仅当它是非空的时,节点集才为真
当且仅当其长度为非零时,字符串才为真
除了四种基本类型之外的类型的对象将以依赖于该类型的方式转换为布尔值"
在您的情况下,字符串"false"不是数字0并且具有正长度,因此应用上面第3个子弹中的规则,屈服true().
因此,要在XSLT 1.0中定义其值为的变量 false(),需要将定义写为如下:
<xsl:variable name="vMyVar" select="false()"/>
或者,如果你不记得这个,你总是可以写:
<xsl:variable name="vMyVar" select="1 = 0"/>
(指定任何求值的表达式false()),XSLT处理器将为您完成工作.
在XSLT 2.0中,最好明确指定变量的类型:
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>
Yuv*_*dam 17
你正在使用的boolean()函数确实在做它的工作.要使用显式的true和false值,您应该使用以下函数:
<xsl:variable name="var_false" select="false()"/>
<xsl:variable name="var_true" select="true()"/>
Run Code Online (Sandbox Code Playgroud)
仅供参考,根据MSDN文档,boolean()返回以下内容:
小智 5
也许在这个阶段有点晚了,但是对付布尔人并不值得付出努力.下面是我如何处理从DB返回的布尔值(强制性):
<xsl:variable name="vTrue" select="true()"/>
<xsl:choose>
<xsl:when test="string(Mandatory) = string($vTrue)">
<xsl:text>Mandatory</xsl:text>
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)
希望这有助于某人
| 归档时间: |
|
| 查看次数: |
85264 次 |
| 最近记录: |