RE: [xsl] xsl2 saxon8B stripping off unwanted separation characters

Subject: RE: [xsl] xsl2 saxon8B stripping off unwanted separation characters
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 6 Jul 2006 16:36:07 +0100
When you say select="a", do you expect to select a single "a" element, or
multiple elements?

In XSLT 1.0, if there are multiple elements, xsl:value-of will give you the
value of the first.

In XSLT 2.0, if there are multiple elements, xsl:value-of will give you all
of them, with the chosen separator between the values. But if there are
multiple elements, then normalize-space() (or normalize-unicode()) will
fail, because those functions expect to operate on a single string.

If you want to replicate the XSLT 1.0 behaviour, use a[1] to select the
first a element and discard the rest. But then you don't need a separator.

So the question is, what are you trying to achieve?

Michael Kay
http://www.saxonica.com/


> -----Original Message-----
> From: jacques FAUQUEX [mailto:jacques@xxxxxxxxxxxxxxx]
> Sent: 06 July 2006 14:23
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] xsl2 saxon8B stripping off unwanted separation
> characters
>
> I have a problem normalizing strings in xslt2 with saxon 8B.
> Here is an example
>
> XML    <a
> href="http://www.ac-versailles.fr/etabliss/michelet-vanves";
> target="_blank"> Lycie
>                Michelet</a>
> XSL
>          <xsl:element name="lycie">
>              <xsl:attribute name="nom">
>                  <xsl:value-of separator=" " select="a"/>
>              </xsl:attribute>
>          </xsl:element>
>          <xsl:value-of select="lycie"/>
>
> RESULT
> 	    <lycie nom=" Lycie&#xA;              Michelet">
>
> ----------------------------------------------------------------------
>
> If a add a normalize-space function within the select,
>
>                 <xsl:value-of separator=" "
> select="normalize-space (a)"/>
>
> XALAN y Saxon 6.5.5 output what I want
>
> 		<lycie nom="Lycie Michelet">
>
> On the contrary, Saxon8B outputs a static error :
>
> 	A sequence of more than one item is not allowed as the
> first argument of normalize-unicode()
> 	URL: http://www.w3.org/TR/xpath20/#ERRXPTY0004
>
> What's happening and how is it posible to normalize strings
> with saxon 8B ?
>
> Thanks
>
> Jacques Fauquex

Current Thread