Hey Yago,
I'm not sure this is a bug. The msxml output is doing what the w3c snippet
you have below is requiring. Look again at the example sentence within your
snippet.
I think that case ordering only applies when comparing apples to Apples, not
apples to Airplanes.
Now, I could be totally off the mark here ... so, I'd hang around until some
of the gurus respond.
-Jeff
-----Original Message-----
From: Yago Alvarado [mailto:Yago(_dot_)Alvarado(_at_)uk(_dot_)cpm-int(_dot_)com]
Sent: Tuesday, August 05, 2003 6:52 AM
To: 'xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com'
Subject: [xsl] Sorting Upper-Case first. Microsoft bug?
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
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list