我有以下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中的值始终为true。然而,如果我这样调用扩展方法,我可以传递false:
<xsl:value-of select="UCInterface:InsertNewGroup($UserRef, $SiteCode, false())" />
如何通过从$PriorityCall中获取布尔值来传递布尔值?
将变量定义为<xsl:variable name="PriorityCall" select="$PriorityFlag = 1 or $PriorityFlag = 2 or $PriorityFlag =3"/>
。
在您当前的设置中,您的变量是(在XSLT1.0中)结果树片段类型的,这是一个结果树片段,它包含一个非空的文本节点,恰好包含布尔值的表示。但这将永远转化为真。如果您只是将select
属性与布尔XPath表达式一起使用,如上所示,那么该值的类型为boolean。