Subject: RE: 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: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
|