RE: [xsl] xsl:sort blocks of element with an attribute value

Subject: RE: [xsl] xsl:sort blocks of element with an attribute value
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 17 Oct 2005 18:29:44 +0100
Your source document has a default namespace, so the names in your path
expressions and match patterns in the stylesheet need to be prefixed.

Google for "XSLT FAQ default namespace"

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: Stephane Dion [mailto:stephane@xxxxxxxxxxx]
> Sent: 17 October 2005 17:47
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: RE: [xsl] xsl:sort blocks of element with an attribute value
>
>
> It's not working.
>
> In my case, I'm not sure if I should use xsl:for-each instead of
> apply-template.  I read the documentation but it's not clear
> for me. What do
> you think?
>
> Thanks
> Stephan
>
> -----Message d'origine-----
> De : Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Envoyi : October 17, 2005 10:19
> @ : xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Objet : RE: [xsl] RE : RE: [xsl] xsl:sort blocks of element with an
> attribute value
>
> I think you want
>
> <xsl:sort select="NetPrice/@netAmount" data-type="number"/>
>
> - though this doesn't handle multiple currencies!
>
> Michael Kay
> http://www.saxonica.com/
>
> > -----Original Message-----
> > From: Stephane Dion [mailto:stephane@xxxxxxxxxxx]
> > Sent: 17 October 2005 15:05
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: [xsl] RE : RE: [xsl] xsl:sort blocks of element with
> > an attribute value
> >
> > Hi
> >
> > As requested, this is my stylesheet.
> >  
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> > version="2.0">
> >   <xsl:output method="xml"/>
> >   <xsl:template
> > match="/GetProductOptionsResponse/DetailedProduct/ProductOptio
> > nGroup/Product
> > Option">
> >     <xsl:apply-templates>
> >       <xsl:sort data-type="number" select="@NetPrice"
> > order="ascending"/>
> >     </xsl:apply-templates>
> >   </xsl:template>
> >  
> >   <xsl:template match="*">
> >     <xsl:copy>
> >       <xsl:apply-templates/>
> >     </xsl:copy>
> >   </xsl:template>
> > </xsl:stylesheet>
> >  
> > Thanks for your help
> > Stephan
> >  
> > Hi
> >
> >         Could someone help me with this. 
> >  
> >         I would like to sort each NetPrice block by the
> > attribute value
> > netAmount (ascending) of each block.
> >
> >         Here is my XML:
> >
> > <GetProductOptionsResponse
> xmlns="http://www.accovia/TRIP2004A/01";;>
> >     <Header language="en" version="5.1.0"/>
> >         <DetailedProduct availabilityStatus="available">       
> >         <ProductOptionGroup description="OPTION GROUP 1">   
>         
> >             <ProductOption description="option A">
> >                <NetPrice currency="EUR" netAmount="2.27"
> > priceReferenceID="HTLAVO13XAAX" quantity="1"/>
> >                <NetPrice currency="EUR" netAmount="-45.09"
> > priceReferenceID="HTLAVO13XAAX" quantity="1"/>
> >                <TravelerPrice age="10" travelerId="003">
> >                     <PriceSummary baseAmount="0.00"/>
> >                </TravelerPrice>
> >             </ProductOption>
> >             <ProductOption description="option B">
> >                 <NetPrice currency="EUR" netAmount="2.27"
> > priceReferenceID="HTLAVO13XAAX" quantity="1"/>
> >                 <NetPrice currency="EUR" netAmount="-45.09"
> > priceReferenceID="HTLAVO13XAAX" quantity="1"/>
> >                <TravelerPrice age="10" travelerId="003">
> >                     <PriceSummary baseAmount="0.00"/>
> >                </TravelerPrice>
> >             </ProductOption>
> >         </ProductOptionGroup>
> >         <ProductOptionGroup description="OPTION GROUP 2">   
>         
> >             <ProductOption description="option Z">
> >                 <NetPrice currency="EUR" netAmount="5.55"
> > priceReferenceID="BHTLAVO13XAAX" quantity="1"/>
> >                 <NetPrice currency="EUR" netAmount="-145.09"
> > priceReferenceID="BHTLAVO13XAAX" quantity="1"/>
> >                <TravelerPrice age="99" travelerId="001">
> >                     <PriceSummary baseAmount="1.00"/>
> >                </TravelerPrice>
> >             </ProductOption>
> >         </ProductOptionGroup>
> >         </DetailedProduct>
> > </GetProductOptionsResponse>
> >
> >         I have tried many many ways without success.
> >        
> > Thanks in advance for your help
> > Stephan
> >  

Current Thread