2010-05-26 17 views
12

XSLT'yi kullanırken, bir sınıfı zaten olan bir öğeye nasıl sınıf uygularım? Yaptığım yol zaten mevcut olan sınıfın yerini alıyor? Sınıfı mevcut sınıfa ek olarak nasıl eklerim?XSLT - Bir sınıfa sınıfla bir şey eklemek?

<xsl:if test="data[@alias = 'off'] = 1"> 
    <xsl:attribute name="class">off</xsl:attribute> 
</xsl:if> 
<xsl:if test="$currentPage/ancestor-or-self::node/@id = current()/@id"> 
    <xsl:attribute name="class">active</xsl:attribute> 
</xsl:if> 

Teşekkür şu şekildedir: Benim kodudur. etrafında

cevap

14

başka yolu:

<xsl:attribute name="class"> 
    <xsl:if test="data[@alias = 'off'] = 1">off </xsl:if> 
    <xsl:if test="$currentPage/ancestor-or-self::node/@id = current()/@id">active </xsl:if> 
</xsl:attribute> 

Not Her özellik değeri sonra koymak ekstra alan. XSLT işlemci, izleyen alanı öznitelik değerinden kendi başına kırpacak, böylece karmaşık alan işlemlerine gerek kalmayacaktır.

+0

, teşekkürler! – Probocop

+1

Boşluk bakımından, Qt uygulamasının bu şekilde yazılırsa yeni satır karakterlerini içereceğini unutmayın. Ancak,

+0

@Alexis BTW, bir öznitelik değerinin içindeki değişmez yeni satırlar, belge yeniden ayrıştırıldığında boşluk içine normalleştirilir. Bu yüzden, çirkin görünüme rağmen, yeni satırlar burada bile belirteci sınırlayıcı olarak çalışacaktı. – Tomalak

6

Eğer yenisiyle geçerli class özelliğinin değerini arada kullanabilirsiniz:

mükemmel
<xsl:if test="$currentPage/ancestor-or-self::node/@id = current()/@id"> 
    <xsl:attribute name="class"> 
     <xsl:value-of select="concat(@class,' active')"/> 
    </xsl:attribute> 
</xsl:if> 
+0

Bunu Qt xmlpatterns aracıyla denedim ve çalışmıyor (hiçbir şey olmuyor). Çok kötü, çünkü diğer yöntem, benim durumumda kullanamıyorum! –