xsl-list
[Top] [All Lists]

Re: [xsl] Sort an xml file by the using the ordering/sorting information from another xml file

2006-05-11 01:36:33
Please try this

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:output method="xml" indent="yes" />

<xsl:variable name="doc" select="/" />
<xsl:variable name="sortorder" select="document('SortingOrder.xml')" />

<xsl:template match="/myRoot">
<myRoot>
  <xsl:for-each select="$sortorder/mySortingOrder/myElement">
    <xsl:copy-of select="$doc/myRoot/myElement[(_at_)key = current()/@key]" />
  </xsl:for-each>
</myRoot>
</xsl:template>

</xsl:stylesheet>

Regards,
Mukul

On 5/11/06, Jagsmiles <jagsmiles(_at_)gmail(_dot_)com> wrote:
I want to sort the elements of an xml file, The criteria of ordering is
actually specified in another xml file.

Can i use xsl to sort one xml file by the using the ordering data from
another xml file?:

I give a small e.g.

The Original xml file: main.xml

<myRoot>
       <myElement key=3D"Tokyo" country=3D"JAP">I am Tokyo</myElement>
       <myElement key=3D"NewYork" country=3D"US">I am NewYork</myElement>
       <myElement key=3D"Sydney" country=3D"AUS">I am Sydney</myElement>
       <myElement key=3D"London" country=3D"UK">I am London</myElement>
</myRoot>

The Sorting Criteria xml file: SortingOrder.xml:
<mySortingOrder>
       <myElement key=3D"NewYork" />
       <myElement key=3D"London" />
       <myElement key=3D"Tokyo" />
       <myElement key=3D"Sydney" />
</mySortingOrder>


After sorting the final xml data i should get is:
<myRoot>
       <myElement key=3D"NewYork" country=3D"US">I am NewYork</myElement>
       <myElement key=3D"London" country=3D"UK">I am London</myElement>
       <myElement key=3D"Tokyo" country=3D"JAP">I am Tokyo</myElement>
       <myElement key=3D"Sydney" country=3D"AUS">I am Sydney</myElement>
</myRoot>

in the final xml, the myElement elements are sorted according to the sortin=
g
order specified in SortingOrder.xml.

Can i achieve this using xsl?
Normally for the xsl:sort the sorting information should be present in the
element itself.

Thanks in advance.
Jagdishwar.

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>