2011-05-04 8 views
20

मैं प्रत्येक लूप के लिए एक्सएसएल/एफओ में उलटा दिख रहा हूं।एक्सएसएल कैसे करें: प्रत्येक के लिए रिवर्स ऑर्डर

उदाहरण एक्सएमएल

<data> 
    <record id="1"/> 
    <record id="2"/> 
    <record id="3"/> 
    <record id="4"/> 
    <record id="5"/> 
    <record id="6"/> 
</data> 
XSL

<xsl:for-each select="descendant-or-self::*/record"> 
    <xsl:value-of select="@id"/> 
</xsl:for-each> 

मैं उत्पादन 654321 रहा हूँ के साथ

और के लिए

नहीं 123456

कि यह कैसे संभव है?

उत्तर

28

उपयोग xsl:sort नहीं (कि बिना, आप अधिक 9 संख्या के साथ समस्याओं छँटाई में चलाने जाएगा) @id द्वारा ऑर्डर करने के लिए, लेकिन position():

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:template match="/data"> 
    <xsl:for-each select="descendant-or-self::*/record"> 
     <xsl:sort select="position()" data-type="number" order="descending"/> 
     <xsl:value-of select="@id"/> 
    </xsl:for-each> 
</xsl:template> 
</xsl:stylesheet> 
+0

बिल्कुल ऑर्डर करने के लिए विशेष रूप से धन्यवाद क्योंकि यह एफओपी के 0.23 (अनुकूलित और अद्यतन करने में असमर्थ) का उपयोग कर अरबी दस्तावेजों के प्रवाह के लिए धन्यवाद है। –

+0

सही उत्तर। हालांकि इस मामले के लिए 'वंश-या-स्वयं :: */रिकॉर्ड' की कोई आवश्यकता नहीं है। यह सिर्फ 'रिकॉर्ड' हो सकता है। –

3

xsl:sort आपका मित्र है;

<xsl:for-each select="descendant-or-self::*/record"> 
    <xsl:sort select="@id" order="descending" /> 
    <xsl:value-of select="@id"/> 
</xsl:for-each> 
5

हाँ, सिकंदर सही है - भूल गया डेटा प्रकार, हालांकि:

<xsl:for-each select="descendant-or-self::*/record"> 
    <xsl:sort select="@id" order="descending" data-type="number" /> 
    <xsl:value-of select="@id"/> 
</xsl:for-each> 

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