xsl-list
[Top] [All Lists]

RE: Complex Sorting Help

2006-02-25 17:20:50
Guess it's time to get that .NET Saxon so I've got XSLT 2.0. :-) Thanks.

 

-----Original Message-----
From: Michael Kay [mailto:mike(_at_)saxonica(_dot_)com]
Sent: Saturday, February 25, 2006 7:12 PM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Complex Sorting Help

In XSLT 2.0 you can create a user-defined function and call it to compute
your sort key.

In 1.0 the simplest solution is probably a two-pass one: in the first
pass,
compute the sort keys and add them as an extra attribute to the Property
elements; in the second pass, sort on that attribute.

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

-----Original Message-----
From: Crist, Trevor [mailto:tcrist(_at_)inntopia(_dot_)com]
Sent: 26 February 2006 00:02
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Complex Sorting Help

In the following example, I am trying to return the Property
with the cheapest TOTAL rate first.
What I WANT to do is something like, this, but of course it
doesn't work...
Any ideas how to get the desired results?

XML:
<Properties>
    <Property Name="My Hotel">
            <Room Name="King Room">
                    <Day Date="04/15/2006" Quantity="2"
Price="180.00"/>
                    <Day Date="04/15/2006" Quantity="2"
Price="180.00"/>
                    <Day Date="04/15/2006" Quantity="2"
Price="100.00"/>
            </Room>
            <Room Name="Suite">
                    <Day Date="04/15/2006" Quantity="2"
Price="280.00"/>
                    <Day Date="04/15/2006" Quantity="2"
Price="280.00"/>
                    <Day Date="04/15/2006" Quantity="2"
Price="240.00"/>
            </Room>
    </Property>
    <Property Name="Other Hotel">
            <Room Name="Queen Room">
                    <Day Date="04/15/2006" Quantity="2"
Price="150.00"/>
                    <Day Date="04/15/2006" Quantity="2"
Price="165.00"/>
                    <Day Date="04/15/2006" Quantity="2"
Price="165.00"/>
            </Room>
    </Property>
</Properties>



XSL:
<xsl:for-each select="Property">
<xsl:sort order="ascending" data-type="number"
select="Room/sum(Day/@Price)"/>
       <br/><br/>
       <xsl:value-of select="@Name"/> <br/>

       <xsl:for-each select="Room">
                   &#160; <xsl:value-of select="@Name"/> :
                    <xsl:value-of select="sum(Day/@Price)"/>
       </xsl:for-each>
</xsl:for-each>



DESIRED RESULTS:
My Hotel
 King Room: 460.00
 Suite: 800.00

Your Hotel
 Queen Room: 480.00







--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>