将布尔值传递给.Net扩展对象

时间:2014-11-07 10:16:57

标签: xslt xslt-1.0

我有以下XSL:

  <xsl:variable name="PriorityCall">
    <xsl:choose>
      <xsl:when test="$PriorityFlag = 1 or $PriorityFlag = 2 or $PriorityFlag =3">
        <xsl:value-of select="true()"/>
      </xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="false()"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>

我希望将PriorityCall的值传递给.Net扩展对象,如下所示:

<xsl:value-of select="UCInterface:InsertNewGroup($UserRef, $SiteCode, $PriorityCall)" />

.Net方法的签名:

public string InsertNewGroup(string userRef, string siteCode, bool prioritySite)
<。> .Net中的值始终为真。但是,如果我调用这样的扩展方法,我可以传递false:

<xsl:value-of select="UCInterface:InsertNewGroup($UserRef, $SiteCode, false())" />

如何通过从$ PriorityCall中获取值来传递bool值?

1 个答案:

答案 0 :(得分:1)

将变量定义为<xsl:variable name="PriorityCall" select="$PriorityFlag = 1 or $PriorityFlag = 2 or $PriorityFlag =3"/>

使用当前设置,您的变量是(在XSLT 1.0中)类型的结果树片段,一个结果树片段,其中包含一个非空文本节点,该节点恰好包含布尔值的表示形式。但是这将永远转换为真。如果您只是将select属性与布尔XPath表达式一起使用,如上所示,那么该值的类型为boolean。