2012-02-01 21 views
5
<xsl:variable name="a">20</xsl:variable> 
    <xsl:variable name="b">10</xsl:variable> 

     <xsl:if test="($a) > ($b)"> 
     ------ 
    </xsl:if> 

Aşağıdaki deneyin .. condion eğer

+0

Bana iyi görünüyor. Ne libxslt ne de Transformiix bir hata gösteriyor. – Saxoier

+0

helpful @user_nums –

cevap

5

hata alma ifadeleri, aksi halde bazı ayrıştırıcıları, etiketi erken kapattığınızı veya başka bir sayfayı açtığınızı düşünür.

+0

'>' dan kaçmak zorunda değilsiniz. $ A> $ b' kullanmak kesinlikle mümkündür. – Saxoier

+0

Haklısınız, birçok ay önce kullandım XSLT ayrıştırıcı beni ayrıştırıcı hatalardan kaçınmak için onları kaçma uygulamasında beni aldım. Şimdi kontrol ettim ve kodun iyi çalışıyor. Her gün yeni bir şeyler öğreniyorum, teşekkürler! –

5

Gönderdiğiniz örnek çalışmalıdır. Bununla birlikte, durumunuzda, her iki değişken de uzunluklarının farklı olduğu durumlarda şaşırtıcı sonuçlar verebilecek tipte bir dizgedir. Karşılaştırma operatörünün farklı veri türleri üzerindeki davranışı xpath spec on booleans'da belirtilmiştir.

bu select özelliğini kullanarak değişkenleri bildirmek veya el karşılaştırma için number onları dönüştürmek olabilir kaçınmak için:

<xsl:variable name="a" select="20"/> 
<xsl:variable name="b" select="10"/> 
... 
<xsl:if test="number($a) > number($b)"> 
</xsl:if> 
+1

"Karşılaştırılacak hiçbir nesne düğüm kümesi olmadığında ve kullanıcı <=, <, > = veya> ise, nesneler her iki nesneyi sayılara dönüştürerek ve sayıları IEEE 754'e göre karşılaştırarak karşılaştırılır." - Tanımlanmamış davranış yok. – Saxoier

+0

@Saxoier: Haklısınız, teklifinizden önce gelen paragraf sadece operatörlere uygulanır = = ve '! ='. –

İlgili konular

 İlgili konular