2014-11-07 2 views
0

У меня есть следующий XSL:Pass булево значение объекта .Net Extension

<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 Extension следующим образом:

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

Подпись метода .Net:

public string InsertNewGroup(string userRef, string siteCode, bool prioritySite) 

Значение в .Net всегда верно. Однако я могу передать ложь, если я вызываю метод расширения, как это:

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

Как я могу передать булево значение, получая значение из $ PriorityCall?

ответ

1

Определите переменную как <xsl:variable name="PriorityCall" select="$PriorityFlag = 1 or $PriorityFlag = 2 or $PriorityFlag =3"/>.

С вашей текущей настройкой ваша переменная является (в XSLT 1.0) фрагментом результирующего дерева типа, фрагментом результирующего дерева, который содержит единственный, не пустой текстовый узел, который, как представляется, содержит представление булевского значения. Но это всегда будет преобразовано в истинное. Если вы просто используете атрибут select с булевым выражением XPath, как показано выше, значение имеет тип boolean.

Смежные вопросы