私はXSLTにまったく慣れていないので、次のコードでどこが間違っているのか理解できません。
<xsl:variable name="var" select="boolean('false')"/>
<xsl:if test="$var'">variable is true</xsl:if>
falseを意味する場合は、常にtrueを返します。どうして?
私はXSLTにまったく慣れていないので、次のコードでどこが間違っているのか理解できません。
<xsl:variable name="var" select="boolean('false')"/>
<xsl:if test="$var'">variable is true</xsl:if>
falseを意味する場合は、常にtrueを返します。どうして?
回答:
以下で定義されている$ var変数の値:
   <xsl:variable name="var" select="boolean('false')"/>
です
   true()
これは、XPathでは、値のコンストラクターである、とはfalse対照的にfalse()、" "は通常の文字列であるためbooleanです。false()
XPathの2つのブール値は次のとおりです(構築されていることに注意してください)。
   true()  そして  false()
任意の値をブール値に変換する詳細は、XPath仕様に詳しく説明されています。
数値が真であるのは、それが正または負のゼロでもNaNでもない場合のみです。
ノードセットは、空でない場合にのみtrueになります。
文字列は、その長さがゼロ以外の場合にのみ真になります
4つの基本タイプ以外のタイプのオブジェクトは、そのタイプに依存する方法でブール値に変換されます。
あなたの場合、文字列「false」は数値0ではなく、正の長さであるため、上記の3番目の箇条書きのルールが適用されてtrue()。
したがって、値が false()であるXSLT 1.0で変数を定義するには、次のように定義を記述する必要があります。
   <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()"/>
falseありtrueますか?
                    使用しているboolean()関数は、実際にその役割を果たしています。明示的なtrue値とfalse値を使用するには、次の関数を使用する必要があります。
<xsl:variable name="var_false" select="false()"/>
<xsl:variable name="var_true" select="true()"/>
参考までに、MSDNのドキュメントによると、boolean()は次を返します。
この段階では少し遅れているかもしれませんが、ブール値を扱うimoは努力する価値がありません。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>
これが誰かを助けることを願っています