我们可以在<xsl:value-of>元素中使用多个脚本函数

时间:2017-06-27 16:30:30

标签: xml xslt

以下声明是否有效:

<xsl:with-param name="IsEnabled">
     <xsl:value-of select="script:IsCustomerEnabled('abc') and script:IsBrandEnabled('xyz')"/>
</xsl:with-param>

当两者都返回Enabled时输出是什么?

此外,逗号(,)运算符将代替和:

<xsl:with-param name="IsEnabled">
     <xsl:value-of select="script:IsCustomerEnabled('abc'), script:IsBrandEnabled('xyz')"/>
</xsl:with-param>

1 个答案:

答案 0 :(得分:4)

如果两个调用都返回true,那么应用&#34;和&#34;的结果operator将是xs:boolean值true,其中xsl:value-of将显示为字符串&#34; true&#34;。

应用逗号运算符(需要XPath 2.0)的结果将是包含两个布尔值(true,true)的序列,其中xsl:value-of(在2.0中)将显示为&#34; true true&#34 ;

使用xsl:value-of作为变量绑定元素(如xsl:with-param)的子元素通常是不正确的,因为它具有构造包含单个文本节点的文档节点的效果,该节点包含转换为a的实际值串。没有理由进行所有转换:请使用xsl:with-param的select属性。

有时这只会导致效率低下,但有时会导致可怕的错误。例如,如果您使用

<xsl:variable name="option">
  <xsl:value-of select="false()"/>
</xsl:variable>

<xsl:if test="$option">...

然后测试计算结果为true,因为$ option的值是一个节点,无论节点的内容如何,​​非空节点集的有效布尔值总是为真。