2010-05-26 11 views
12

एक्सएसएलटी का उपयोग करते समय मैं एक ऐसे तत्व को कक्षा कैसे लागू करूं जिसमें पहले से ही कक्षा हो? जिस तरह से मैं इसे कर रहा हूं वह कक्षा को बदल देता है जो पहले से मौजूद है? मैं मौजूदा वर्ग के अलावा कक्षा कैसे जोड़ूं? मेरा कोड निम्नानुसार है:एक्सएसएलटी - कक्षा के साथ कुछ कक्षा में जोड़ना?

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

धन्यवाद।

उत्तर

14

दूसरे के चारों ओर जिस तरह से:

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

नोट अतिरिक्त जगह मैं हर विशेषता मान के बाद डाल दिया। एक्सएसएलटी प्रोसेसर विशेषता मूल्य से पिछली जगह को ट्रिम कर देगा, इसलिए जटिल स्पेस हैंडलिंग करने की आवश्यकता नहीं है।

+0

एकदम सही है कि, धन्यवाद! – Probocop

+1

ध्यान दें कि रिक्त स्थान के संदर्भ में, क्यूटी कार्यान्वयन में इस तरह लिखे गए न्यूलाइन वर्ण शामिल होंगे। यदि आप '

+0

@ एलेक्सिस बीटीडब्ल्यू, एक विशेषता मान के अंदर शाब्दिक न्यूलाइन को अंतरिक्ष में सामान्यीकृत किया जाता है जब दस्तावेज़ को फिर से पार्स किया जाता है। तो उग्र दिखने के बावजूद न्यूलाइन यहां टोकन डिलीमीटर के रूप में भी काम करेगी। – Tomalak

6

आप नए के साथ वर्तमान वर्ग विशेषता मान जोड़ सकते हैं:

<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

मैंने क्यूटी xmlpatterns उपकरण के साथ कोशिश की और यह काम नहीं करता है (कुछ भी नहीं होता है)। बहुत बुरा, क्योंकि दूसरी विधि, मैं अपनी स्थिति में उपयोग नहीं कर सकता! –

संबंधित मुद्दे