Subject: [xsl] xsl sort query From: Cormac Fiddes <Cormac.Fiddes@xxxxxx> Date: Fri, 29 Aug 2003 16:00:41 +0100 (WET-DST) |
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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] xsl:number and including , Wendell Piez | Thread | Re: [xsl] xsl sort query, G. Ken Holman |
Re: [xsl] xsl:number and including , Denis Haskin | Date | Re: [xsl] Re: Problem with Paramete, Wendell Piez |
Month |