2016-04-02 30 views
2

İki değişkeni xsl ile karşılaştırıyorum. Benİki değişken xsl ile nasıl karşılaştırılır?

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

O Çıktı en=en

yaptığınızda Ama kullanma karşılaştırın zaman:

<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> 

Her zaman French Language verir, ancak bunu English Language dönmelidir.

Bu konuda bana yardımcı olabilecek biri olabilir mi, bütün günümü bu konuda mı kaybettim?

+2

Test ifadeniz işe yaramalıydı. Sorunu yeniden oluşturmak için en az XML ve XSLT örneği gönderin – har07

+0

XML'inizin bir örneğini gönderdiyseniz, sorunu teşhis etmek daha kolay olurdu. Sorun, XML'inizde HTML çıktısında göremeyeceğiniz fazladan bir boşluktur. –

+0

böyle değişkeni tanımlamış: tr fr Emran

cevap

1

Değerlerinizin, görmediğiniz, öndeki ve/veya sonunda boşluk bırakması; özellikle işlenen HTML'yi bir tarayıcıda görüntülüyorsa. İlk örnekte, önce ve değerler sonra bir karakter ekleyin: Fark başında veya sonlarındaki boşluk ise

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

Ayrıca string-length()

test edebilir, sen kurtulmak için normalize-space() işlevini kullanabilirsiniz onları karşılaştırarak değerleri zaman: yapıyorsun ne olursa olsun

<xsl:choose> 
    <xsl:when test='normalize-space($CONTEXT_LANGUAGE) = normalize-space($LANGUAGE_EN)'> 
     <p>English Language</p> 
    </xsl:when> 
    <xsl:otherwise> 
     <p>French Language</p> 
    </xsl:otherwise>     
</xsl:choose> 
+0

Dil: * en * = * tr * – Emran

+0

Yukarıdakileri denedim denedim hiçbir şey yapmadı – Emran

+0

** ve ** sonra ** her bir değeri yazdırın. Görünüşte ilk 'tr'den önce bir boşluk var gibi görünüyor ... Ayrıca,' string-length() 'değerleri nelerdir? –

0

doğrudur ama bir şey değerleri karşılaştırmak yerine doğrudan değişkenleri 2 farklı değişkenler saklayın ve karşılaştırmak için denemek için denemek kalmamasıdır. Sen olarak xsl değişkeni kullanabilirsiniz: $ CONTEXT_LANGUAGE ve $ LANGUAGE_EN: 2 değerleri için 2 farklı değişkenleri atamak için

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

deneyin. Şimdi, her iki değişkeni de yazdırmayı deneyin ve atadığınız değerleri alıyorsanız, HTML sayfasında bunları çapraz doğrulayın, ardından doğru yoldasınız ve şimdi döngüsünü deneyin < 'xsl: select'>. Eğer bir if döngüsünü oluşturmaya çalışmayın ve < 'xsl: if'> iyi çalışıyorsa tekrar kontrol edin. Bana göre, her ikisi de çalışmalı.

Çözüm faydalı olduğunda lütfen oy verin.

Teşekkürler!

İlgili konular