|
Subject: RE: [xsl] Sort an xml file by the using the ordering/sorting information from another xml file From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 11 May 2006 09:45:25 +0100 |
Doing this is easy:
<xsl:sort
select="count(document('SortingOrder.xml')/*/MyElement[@key=current()/@key]/
preceding-sibling::*)" data-type="number"/>
Doing it efficiently may be a little more work: I would recommend creating a
copy of the SortingOrder file in which the elements are sequentially
numbered, and using a key to do the lookup.
Alternatively, if you know that all the sort keys appear in the SortingOrder
file, you could reverse the process: iterate over the SortingOrder file, and
for each element, find the elements having that key in the main file (by
means of a key lookup).
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Jagsmiles [mailto:jagsmiles@xxxxxxxxx]
> Sent: 11 May 2006 08:42
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Sort an xml file by the using the
> ordering/sorting information from another xml file
>
> 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.
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Sort an xml file by the u, Mukul Gandhi | Thread | [xsl] Isolating specific elements, Aaron Johnson |
| Re: [xsl] Sort an xml file by the u, Mukul Gandhi | Date | [xsl] Isolating specific elements, Aaron Johnson |
| Month |