Subject: RE: [xsl] re-ordering nodes/partial sort From: "Kevin Bird" <kevin.bird@xxxxxxxxxxxxx> Date: Sun, 10 Oct 2004 22:29:46 +0100 |
Hi Anton Many thanks for the solution, it's appreciated. -- Kevin PS. Thanks to David for the earlier suggestions. > -----Original Message----- > From: Anton Triest [mailto:anton@xxxxxxxx] > Sent: 10 October 2004 21:05 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: Re: [xsl] re-ordering nodes/partial sort > > <?xml version="1.0" encoding="utf-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:my="urn:mine" extension-element-prefixes="my"> > > <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> > <xsl:strip-space elements="*"/> > > <my:priorities> > <my:p desc="Bed & Breakfast"/> > <my:p desc="Bed & Breakfast (child)"/> > <my:p desc="Half Board"/> > <my:p desc="Half Board (child)"/> > <my:p desc="Full Board"/> > <my:p desc="Full Board (child)"/> > </my:priorities> > > <xsl:variable name="priorities" > select="document('')/xsl:stylesheet/my:priorities/my:p"/> > > <xsl:template match="/supplements"> > <supplements> > <xsl:apply-templates select="supp"> > <xsl:sort > select="count($priorities[@desc=current()/supp-desc]/preceding::*)"/> > </xsl:apply-templates> > </supplements> > </xsl:template> > > <xsl:template match="supp"> > <xsl:copy-of select="."/> > </xsl:template> > > </xsl:stylesheet> > > This will sort the supp elements according to the position in > my:priorities. > Not found supp-desc strings will have priority 0 so they will be first > in output. > > Of course you can also put the priorities in a separate file and select > it like > > <xsl:variable name="priorities" > select="document('priorities.xml')/my:priorities/my:p"/> > > Cheers, > Anton > > Kevin Bird wrote: > > >Hi David > > > >Thanks for the answer(s). It is not a straighforward sort. Looking at in > >terms of priority: > > > >Bed & Breakfast --> priority 1 > >Bed & Breakfast (child) --> priority 2 > >Half Board --> priority 3 > >Half Board (child) --> priority 4 > >Full Board --> priority 5 > >Full Board (child) --> priority 6 > > > >All other <supp> nodes are output before the priority ones above (in > >document order). > > > >Kind regards. > > > >-- > >Kevin
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] re-ordering nodes/partial, Anton Triest | Thread | Re: [xsl] re-ordering nodes/partial, M. David Peterson |
Re: [xsl] Union of XPath sequences , Jeni Tennison | Date | [xsl] How does one merge sequences?, Kenneth Stephen |
Month |