[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] Re: xsl sort query


Subject: [xsl] Re: xsl sort query
From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx>
Date: Fri, 29 Aug 2003 19:50:19 +0200

Have a look at the XSL-FAQ -- this section should contain the answer to your
question:

http://dpawson.co.uk/xsl/sect2/N6461.html



=====
Cheers,

Dimitre Novatchev.
http://fxsl.sourceforge.net/ -- the home of FXSL



"Cormac Fiddes" <Cormac.Fiddes@xxxxxx> wrote in message
news:F240IFW3FPUO*/R=A1/R=PROSYS/U=FIDDES_C/@MHS...
>
> Hi,
> I have the following stylesheet & xml data and I need to dynamically sort
the
> data coming from the xml file.
>
> There is a need to sort on 'if' basis, i.e.  a value(CFIndica) coming from
the
> xml file within a different group(HEADINGS) determines the sort. I.E.
>
> I need to sort by
> when CFIndica = 1 then sort by cfnumber ascending
> when CFIndica = 2 then sort by cfsurname ascending
> when CFIndica = 3 then sort by cfcentre ascending.
> AND to allow a default of 'NO' sort, i.e CFIndica might be = 4 or just
have a
> default of no sort.(perhaps just not apply CFIndica of 1 to 3?).
>
> I had thought it would be something like this, but sadly no effect.
> The xml data is like this,
>
>
>  <GROUP_MEMBER_DETAILS>
>          <CFNumber>18888</CFNumber>
>          <CFTitle>Mr</CFTitle>
>          <CFFirstName>Cormac</CFFirstName>
>          <CFSurname>GGGGGG</CFSurname>
>          <CFIden>XX999</CFIden>
>          <CFCentre>1122</CFCentre>
>          <CFProd>Plan B</CFProd>
>          <CFCov>Hsteps</CFCov>
>          <CFAdu>6</CFAdu>
>          <Students>5</Students>
>          <Children>7</Children>
>          <Status>A</Status>
>       </GROUP_MEMBER_DETAILS>
>
>       <GROUP_MEMBER_DETAILS>
>          <CFNumber>12345</CFNumber>
>          <CFTitle>Mr</CFTitle>
>          <CFFirstName>Cormac</CFFirstName>
>          <CFSurname>AAAAAA</CFSurname>
>          <CFIden>XX999</CFIden>
>          <CFCentre>1122</CFCentre>
>          <CFProd>Plan B</CFProd>
>          <CFCov>Hsteps</CFCov>
>          <CFAdu>6</CFAdu>
>          <Students>5</Students>
>          <Children>7</Children>
>          <Status>A</Status>
>       </GROUP_MEMBER_DETAILS>
>
>       <GROUP_MEMBER_DETAILS>
>          <CFNumber>14444</CFNumber>
>          <CFTitle>Mr</CFTitle>
>          <CFFirstName>Cormac</CFFirstName>
>          <CFSurname>CCCCCC</CFSurname>
>          <CFIden>XX999</CFIden>
>          <CFCentre>1122</CFCentre>
>          <CFProd>Plan B</CFProd>
>          <CFCov>Hsteps</CFCov>
>          <CFAdu>6</CFAdu>
>          <Students>5</Students>
>          <Children>7</Children>
>          <Status>A</Status>
>       </GROUP_MEMBER_DETAILS>
>
>       <GROUP_MEMBER_DETAILS>
>          <CFNumber>16666</CFNumber>
>          <CFTitle>Mr</CFTitle>
>          <CFFirstName>Cormac</CFFirstName>
>          <CFSurname>EEEEEE</CFSurname>
>          <CFIden>XX999</CFIden>
>          <CFCentre>1122</CFCentre>
>          <CFProd>Plan B</CFProd>
>          <CFCov>Hsteps</CFCov>
>          <CFAdu>6</CFAdu>
>          <Students>5</Students>
>          <Children>7</Children>
>          <Status>A</Status>
>       </GROUP_MEMBER_DETAILS>
>
>       <GROUP_MEMBER_DETAILS>
>          <CFNumber>15555</CFNumber>
>          <CFTitle>Mr</CFTitle>
>          <CFFirstName>Cormac</CFFirstName>
>          <CFSurname>DDDDDD</CFSurname>
>          <CFIden>XX999</CFIden>
>          <CFCentre>1122</CFCentre>
>          <CFProd>Plan B</CFProd>
>          <CFCov>Hsteps</CFCov>
>          <CFAdu>6</CFAdu>
>          <Students>5</Students>
>          <Children>7</Children>
>          <Status>A</Status>
>       </GROUP_MEMBER_DETAILS>
>
>       <GROUP_MEMBER_DETAILS>
>          <CFNumber>19999</CFNumber>
>          <CFTitle>Mr</CFTitle>
>          <CFFirstName>Cormac</CFFirstName>
>          <CFSurname>HHHHHH</CFSurname>
>          <CFIden>XX999</CFIden>
>          <CFCentre>1122</CFCentre>
>          <CFProd>Plan B</CFProd>
>          <CFCov>Hsteps</CFCov>
>          <CFAdu>6</CFAdu>
>          <CFStu>5</CFStu>
>          <CFChi>7</CFChi>
>          <CFSta>A</CFSta>
>       </GROUP_MEMBER_DETAILS>
>
> I need to sort by
> when CFIndica = 1 then sort by cfnumber ascending
> when CFIndica = 2 then sort by cfsurname ascending
> when CFIndica = 3 then sort by cfcentre ascending.
> AND to allow a default of 'NO' sort, i.e CFIndica might be = 4 or just
have a
> default of no sort.(perhaps just not apply CFIndica of 1 to 3?).
>
> I had thought the xsl would be like:
>
> <!--
> Define sorting in details
> -->
> <xsl:template match="CF_DETAILS">
> <xsl:variable name="CFOption">
> <xsl:value-of select="string(HEADINGS//CFIndica)"/>
> </xsl:variable>
> <xsl:if test="$CFOption=1">
> <xsl:apply-templates>
> <xsl:sort select="CFNumber" order="ascending"
> data-type="number"/>
> </xsl:apply-templates>
> </xsl:if>
> <xsl:if test="$CFOption=2">
> <xsl:apply-templates>
> <xsl:sort select="CFSurname" order="ascending"
> data-type="number"/>
> </xsl:apply-templates>
> </xsl:if>
> <xsl:if test="$CFOption=3">
> <xsl:apply-templates>
> <xsl:sort select="CFCentre" order="ascending"
> data-type="number"/>
> </xsl:apply-templates>
> </xsl:if>
> </xsl:template>
>
> <!--
> Define the elements that are required within the block CF_DETAILS
> -->
> <xsl:template match="CF_DETAILS">
>   <CF_DETAILS>
> <xsl:call-template name="G_CF_DETAILS"/>
> <xsl:apply-templates select="descendant::CFNumber"/>
> <xsl:apply-templates select="descendant::CFTitle"/>
> <xsl:apply-templates select="descendant::CFFirstname"/>
> <xsl:apply-templates select="descendant::CFSurname"/>
> <xsl:apply-templates select="descendant::CFIden"/>
> <xsl:apply-templates select="descendant::CFCentre"/>
> <xsl:apply-templates select="descendant::CFProd"/>
> <xsl:apply-templates select="descendant::CFCov"/>
> <xsl:apply-templates select="descendant::CFStu"/>
> <xsl:apply-templates select="descendant::CFStu"/>
> <xsl:apply-templates select="descendant::CFStu"/>
>   </CF_DETAILS>
> </xsl:template>
>
> <!--
> call template CF_DETAILS
> -->
>
> <xsl:template name="G_CF_DETAILS">
> <xsl:element name="CF_DETAILS">
>   <xsl:attribute name="xfa:dataNode">dataGroup</xsl:attribute>
>   <xsl:text>begin</xsl:text>
> </xsl:element>
> </xsl:template>
>
> Please help out, as this is really bugging me!
>
> cheers
> Cormac
>
> Cormac Fiddes,
> Software Development,
> Abbey St.
>
> Ext: 4386
>
> Direct Line: 01-7994009
>
> E-Mail : Cormac.Fiddes@xxxxxx
>
> http://www.vhihealthe.com
> http://www.vhihealthcare.com
> _____________________________
>
> ************************************************************
> This e-mail and any files transmitted with it contain information which
may be
> confidential and which may also be privileged and is intended solely for
the
> use of the individual or entity to whom it is addressed.  Unless you are
the
> intended recipient you may not copy or use it, or disclose it to anyone
else.
> Any opinions expressed are that of the individual and not necessarily that
of
> Vhi Healthcare. If you have received this e-mail in error please notify
the
> sender by return. This footnote also confirms that this e-mail message has
been
> Swept for the presence of computer viruses.
>
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



Current Thread
Keywords