[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

sort problem

Subject: sort problem
From: "Edward Maesen" <emmt@xxxxxxxxxxxx>
Date: Sun, 19 Oct 2003 13:29:36 -0700
sort problem
I've run into a sort problem with MSXML4 and wonder if it's a bug in that
processor or expected behavior. Basically, the problem seems to be related
to a sort where the select starts at the document node. See stylesheet and
sample XML below.

The stylesheet (sortTest.xsl):
==============================
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:template match="/">
		<xsl:value-of select="'&#x0A;'"/>
		<xsl:apply-templates select="test/content/listgroup"/>
	</xsl:template>
	<xsl:template match="listgroup">
		<xsl:apply-templates select="list">
			<!-- the next sort statement is supposed to sort by @pos, but has no
effect in MSXML4. It does work as expected in MSXML3, Xalan 1.4 and Saxon
6.5 -->
			<xsl:sort select="/test/data/list[@ref=current()/@id]/@pos"/>
		</xsl:apply-templates>
	</xsl:template>
	<xsl:template match="list">
		<xsl:value-of select="@id"/> - <xsl:value-of
select="/test/data/list[@ref=current()/@id]/@pos"/> - <xsl:value-of
select="."/>
		<xsl:value-of select="'&#x0A;'"/>
	</xsl:template>
</xsl:stylesheet>


The source XML:
===============
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="sortTest.xsl"?>
<test>
	<content>
		<!-- this is a static pre-defined content section, with list elements that
can be re-ordered by user/session preferences. -->
		<listgroup>
			<list id="a" name="first">first list in content section</list>
			<list id="b" name="second">second list in content section</list>
			<list id="c" name="third">third list in content section</list>
			<list id="d" name="fourth">fourth list in content section</list>
		</listgroup>
	</content>
	<data>
		<!-- this is a session-specific section (appended by an aggregation step
after page request) which contains the desired order of list elements in the
above content section. -->
		<list ref="a" pos="3"/>
		<list ref="b" pos="4"/>
		<list ref="c" pos="2"/>
		<list ref="d" pos="1"/>
	</data>
</test>

Expected output:
================
d - 1 - fourth list in content section
c - 2 - third list in content section
a - 3 - first list in content section
b - 4 - second list in content section

Output in MXSML4:
=================
a - 3 - first list in content section
b - 4 - second list in content section
c - 2 - third list in content section
d - 1 - fourth list in content section


In MSXML4 I get the output in document order, in stead of my
desired/expected output. I rewrote the sort select using keys but got the
same result.

I tested in MSXML3, Xalan 1.4 and Saxon 6.5, which gave the desired result.
Did I run into an MSXML4 bug or did the older processors not implement the
XSLT spec correctly? From reading the spec I don't see why my expected
result would not be allowed so I suspect a bug in MSXML4. Can anybody
confirm? Does anyone have a suggestion for a workaround?

Thanks,
Edward


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.