xml
  • xslt
  • string-comparison
  • teamsite
  • 2016-04-02 16 views 2 likes 
    2

    xslの2つの変数を比較しています。私はxslの2つの変数を比較するには?

    <p>Language:<xsl:value-of select="$LANGUAGE_EN"/>=<xsl:value-of select="$CONTEXT_LANGUAGE"/></p> 
    

    また出力en=en

    を行うとしかし、私は使用して比較する場合:

    <xsl:choose> 
        <xsl:when test='string($CONTEXT_LANGUAGE) = string($LANGUAGE_EN)'> 
         <p>English Language</p> 
        </xsl:when> 
        <xsl:otherwise> 
         <p>French Language</p> 
        </xsl:otherwise>     
    </xsl:choose> 
    

    をそれは常にFrench Languageを返しますが、それはEnglish Languageを返す必要があります。

    誰かが私にこれを手伝ってもらえますか?

    +2

    テスト式が有効だったはずです。問題を再現する最小限のXMLおよびXSLTサンプルを投稿する – har07

    +0

    XMLのサンプルを投稿した場合、問題を診断する方が簡単です。この問題は、HTML出力に表示されない余分な空白がXMLに存在する可能性があります。 –

    +0

    は、私はこのような変数を定義しています。 エン ます。 FR Emran

    答えて

    1

    表示されていない空白および/または末尾の空白が値に含まれている可能性があります。特にブラウザでレンダリングされたHTMLを表示する場合あなたの最初の例では、値の前後に文字を追加:

    <p>Language:*<xsl:value-of select="$LANGUAGE_EN"/>*=*<xsl:value-of select="$CONTEXT_LANGUAGE"/>*</p> 
    

    差が先頭または最後の空白されている場合は、またstring-length()

    をテストすることができ、あなたが取り除くためにnormalize-space()機能を使用することができます値を比較するとき:

    +0

    言語:* en * = * en * – Emran

    +0

    私は何もしなかったしました – Emran

    +0

    それぞれの値の前に '*' ** **と** after **を表示します。あなたのコメントに最初の 'en'の前にスペースがあるようです...また、' string-length() 'の値は何ですか? –

    0

    あなたがしていることは間違いませんが、値を直接比較しようとする代わりに、2つの異なる変数に格納して変数を比較してみてください。 $ LANGUAGE_EN$ CONTEXT_LANGUAGE

    <xsl:variable 
    name="name" 
    select="expression"> 
    </xsl:variable> 
    

    は、2つの値のための2つの異なる変数を割り当てるようにしてください:として あなたは、XSL変数を使用することができます。 これで、両方の変数を印刷して、HTMLページで相互検証することを試みます。割り当てられた値を取得していれば正しいトラックにあり、ループを試してみましょう。< 'xsl:choose'> ifループを作成せずに、< 'xsl:if'>が正常に動作しているかどうかを再確認しても問題ありません。私によれば、どちらもうまくいくはずです。

    解決策が有用な場合は投票してください。

    ありがとうございました!

    関連する問題