xml-xalan-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 5761] New: - Multi Level Sorting fails when select-statement returns no result in xsl:sort
Date Wed, 09 Jan 2002 12:40:02 GMT
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>

Mime
View raw message