RE: [xsl] xsl:perform-sort sequence problem

Subject: RE: [xsl] xsl:perform-sort sequence problem
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 22 Oct 2007 13:01:25 +0100
xsl:perform-sort is delivering a sequence of strings, and your xsl:variable
is then concatenating these into a single text node. Use <xsl:variable
as="xs:string*"/> if you want a sequence of strings, or
as="attribute(date)*" if you want a sequence of attribute nodes.

Michael Kay 

> -----Original Message-----
> From: Merico Raffaele [mailto:raffaele.merico@xxxxxxx] 
> Sent: 22 October 2007 12:05
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] xsl:perform-sort sequence problem
> 
> Dear Community
> 
> I am using SaxonB 8.9 and I have the following 
> xsl:perform-sort/sequence problem.
> 
> <xsl:variable name="data">
> 	<item id="1">
> 		<departure date="2007-10-22">
> 			<returning date="2007-10-23"/>
> 			<returning date="2007-10-24"/>
> 		</departure>
> 	</item>
> 	<item id="2">
> 		<departure date="2007-10-22">
> 			<returning date="2007-10-22"/>
> 			<returning date="2007-10-24"/>
> 		</departure>
> 	</item>
> </xsl:variable>
> 
> *** OK-Case: 
> When I run the following statements I get an expected result of:
> 
> <xsl:variable name="result"
> select="distinct-values($data/item/departure[@date eq 
> '2007-10-22']/returning/@date)"/> <xsl:value-of 
> select="count($result)"/> <xsl:value-of select="$result" 
> separator=", "/>
> 
> => 3
> => 2007-10-23,2007-10-24,2007-10-22
> 
> 
> *** ??-Case: 
> When I try to sort the same sequence the distinct-values 
> become one single
> string:
> 
> <xsl:variable name="result">
> 	<xsl:perform-sort 
> select="distinct-values($data/item/departure[@date
> eq '2007-10-22']/returning/@date)">
> 		<xsl:sort/>
> 	</xsl:perform-sort>
> </xsl:variable>
> <xsl:value-of select="count($result)"/>
> <xsl:value-of select="$result" separator=", "/>
> 
> => 1
> => 2007-10-22 2007-10-23 2007-10-24
> 
> Can any body please helping me to clarify my misunderstanding 
> of the xsl:perform-sort.
> 
> Many thanks in advance
> Raffaele

Current Thread