[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[xsl] Sorting Upper-Case first. Microsoft bug?
Subject: [xsl] Sorting Upper-Case first. Microsoft bug? From: Yago Alvarado <Yago.Alvarado@xxxxxxxxxxxxxx> Date: Tue, 5 Aug 2003 11:51:47 +0100 |
Hi! I'm not quite sure whether this is a bug in the Microsoft Parser (Microsoft XML 4.0) or it's me doing something wrong... According to the W3C Recommendation: ----------------------->8---------------------->8-------------------------- case-order has the value upper-first or lower-first; this applies when data-type="text", and specifies that upper-case letters should sort before lower-case letters or vice-versa respectively. For example, if lang="en", then A a B b are sorted with case-order="upper-first" and a A b B are sorted with case-order="lower-first". The default value is language dependent. ----------------------->8---------------------->8-------------------------- I'm trying to sort some xml and I want to show first the elements in upper case and then the ones in lower case. See xml/xsl below: XML --- <?xml version="1.0" encoding="iso-8859-1" ?> <recordset name=""> <row ReturnValue="0" Store_ID="7" Location="WA4135" /> <row ReturnValue="0" Store_ID="5" Location="wA4131" /> <row ReturnValue="0" Store_ID="6" Location="WA4133" /> <row ReturnValue="0" Store_ID="8" Location="wA4136" /> <row ReturnValue="0" Store_ID="9" Location="WA4136" /> <row ReturnValue="0" Store_ID="10" Location="WA4138" /> <row ReturnValue="0" Store_ID="11" Location="WA4139" /> </recordset> Please note I've changed some of the Location items to 'w' rather than 'W' (Store_IDs 5 and 8) XSL: ---- <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <recordset> <xsl:apply-templates select="recordset/row"> <xsl:sort select="@Location" data-type="text" order="ascending" case-order="upper-first"/> </xsl:apply-templates> </recordset> </xsl:template> <xsl:template match="row"> <row> <xsl:for-each select="@*"> <xsl:attribute name="{name()}"> <xsl:value-of select="."/> </xsl:attribute> </xsl:for-each> </row> </xsl:template> </xsl:stylesheet> Now... I would expect to see the following result: <?xml version="1.0" encoding="UTF-16"?> <recordset> <row ReturnValue="0" Store_ID="6" Location="WA4133" /> <row ReturnValue="0" Store_ID="7" Location="WA4135" /> <row ReturnValue="0" Store_ID="9" Location="WA4136" /> <row ReturnValue="0" Store_ID="10" Location="WA4138" /> <row ReturnValue="0" Store_ID="11" Location="WA4139" /> <row ReturnValue="0" Store_ID="5" Location="wA4131" /> <row ReturnValue="0" Store_ID="8" Location="wA4136" /> </recordset> Lower case 'w' items at the end. However, what I am getting is: <?xml version="1.0" encoding="UTF-16"?> <recordset> <row ReturnValue="0" Store_ID="5" Location="wA4131" /> <row ReturnValue="0" Store_ID="6" Location="WA4133" /> <row ReturnValue="0" Store_ID="7" Location="WA4135" /> <row ReturnValue="0" Store_ID="9" Location="WA4136" /> <row ReturnValue="0" Store_ID="8" Location="wA4136" /> <row ReturnValue="0" Store_ID="10" Location="WA4138" /> <row ReturnValue="0" Store_ID="11" Location="WA4139" /> </recordset> So it seems to be doing the sorting independently of the case and then when it finds items with the same caracters, it sorts them according to the case i.e. first upper-case then lower-case. Is this the expected behaviour? Is it me missing something here? Thanks, Yago _____________________________________________________________________ This e-mail has been scanned for viruses by MessageLabs. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
AW: [xsl] How to filter records wit, Markus Abt | Thread | Re: [xsl] Sorting Upper-Case first., Mukul Gandhi |
AW: [xsl] How to filter records wit, Markus Abt | Date | [xsl] Re: Merging attribute values , James Cummings |
Month |
Keywords