You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@xalan.apache.org by bu...@apache.org on 2002/01/09 13:40:02 UTC
DO NOT REPLY [Bug 5761] New: -
Multi Level Sorting fails when select-statement returns no result in xsl:sort
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5761>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=5761
Multi Level Sorting fails when select-statement returns no result in xsl:sort
Summary: Multi Level Sorting fails when select-statement returns
no result in xsl:sort
Product: XalanJ2
Version: 2.2.x
Platform: All
OS/Version: All
Status: NEW
Severity: Major
Priority: Other
Component: Xalan
AssignedTo: xalan-dev@xml.apache.org
ReportedBy: mkm@softwareag.com
I detected a bug in xsl:sort when trying to use
parameters in the XSL-stylesheet to control/select
the sorting criteria.
The way how the stylesheet is constructed to do this
is described in 'XSLT Programmers Reference, 2nd ed.,
Michael Kay, Wrox Press' on page 298.
I've done test against the Microsoft MSXML-Stylesheet
Processor, which behaves correctly to the specification.
Xalan failes as describes below:
I put together a simple test case:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>XSL Sorting Example</title>
</head>
<body>
<h3>Result of sorted entries:</h3>
<table border="1">
<tr><th>LineCnt</th><th>Position</th><th>Name</th><th>Key 1</th><th>Key
2</th><th>Key 3</th></tr>
<!-- Multi Level Sorting is done in the following xslt-element
Have a look at the parameter-value of the select-attribute
in the first <xsl:sort> element:
Correct behviour:
select="@key3": This gives back a valid list of values,
so sorting is done correctly.
Setting this
selection critera returns values
found in the
example data.
select="@key4": Because there are no 'key4' attributes
in the example data, no values are
returned
after evaluation of this expression.
In this situation Xalan didn't use
next level
for sorting ('key2'-values) instead
does
something undefined.
(Using the third sorting-level,
seems to skip sorting-level 2)
This behaivour leads to wrong results, if you control the sorting
hierarchy with parameters
-->
<xsl:apply-templates select="example/entry">
<xsl:sort select="@key4" data-type="number"/>
<xsl:sort select="@key2" data-type="number"/>
<xsl:sort select="@key3" data-type="number"/>
</xsl:apply-templates>
</table>
</body>
</html>
</xsl:template>
<!-- Just outputing some data -->
<xsl:template match="entry">
<tr>
<td><xsl:value-of select="position()"/></td>
<td><xsl:value-of select="@pos"/></td>
<td><xsl:value-of select="."/></td>
<td><xsl:value-of select="@key1"/></td>
<td><xsl:value-of select="@key2"/></td>
<td><xsl:value-of select="@key3"/></td>
</tr>
</xsl:template>
</xsl:stylesheet>