2012-07-27 16 views
5

मैं पिछले भाई से संबंधित तर्क से फंस गया हूं,xsl - पिछले पिछला भाई

XML को सरल रखने की कोशिश कर रहा है।

<order> 
<orderList> 
<itemid><id>100</id></itemid> 
<itemid><id>100</id></itemid> 
<itemid><id>111</id></itemid> 
<itemid><id>111</id></itemid> 
<itemid><id>123</id></itemid> 
<itemid><id>324</id></itemid> 
<itemid><id>244</id></itemid> 
<itemid><id>244</id></itemid> 
</orderList> 
</order> 

मैं नीचे xsl का उपयोग कर प्रत्येक नोड के लिए पिछले भाई को खोजने की कोशिश कर रहा हूं। मैं प्रत्येक पाश एक बड़ा XSL में इस तर्क को फिट करने के लिए उपयोग करने की आवश्यकता ...

<html> 
    <body> 
    <table border="1"> 
    <xsl:for-each select="order/orderList/itemid"> 
     <tr> 
     <td>itemid</td> 
     <td><xsl:value-of select="id" /> </td> 
     <td> <xsl:value-of select="preceding-sibling::node()"/> </td> 
     </tr> 
     </xsl:for-each> 
    </table>  
    </body> 
    </html> 
</xsl:template> 

I get these Results 

itemid 100 
itemid 100 100 
itemid 111 100 
itemid 111 100 - expecting 111 
itemid 123 100 - expecting 111 etc 
itemid 324 100 
itemid 244 100 
itemid 244 100 

किसी भी मदद कृपया?

उत्तर

6

एक्सएसएलटी 1.0 में, xsl: जब नोड-सेट दिया जाता है, तो मान ऑर्डर-सेट में उस नोड-सेट में पहले नोड का स्ट्रिंग मान देता है, जिसे दस्तावेज़ ऑर्डर में लिया जाता है। (एक्सएसएलटी 2.0 नोड-सेट में सभी नोड्स के स्ट्रिंग मान देता है)।

पूर्ववर्ती-भाई :: नोड() एक नोड-सेट देता है जिसमें नोड के सभी पिछले भाई बहन होते हैं।

यदि आप केवल पिछले पिछले भाई को चाहते हैं, तो पहले-भाई :: * [1] का उपयोग करें।

+0

त्वरित उत्तर के लिए धन्यवाद !, यह – Sr7

+0

माइकल काम करता है, क्या आप कृपया बता सकते हैं कि "* [1]" वाक्यविन्यास का अर्थ क्या है? – appleLover

+0

:: * का मतलब है कि उनके नाम का चयन करने वाले तत्वों का चयन करें, और [1] का अर्थ है पहला (अक्ष ऑर्डर में) (जो कि दस्तावेज़ ऑर्डर में अंतिम है) का चयन करें। –

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