RE: [xsl] text() handling

Subject: RE: [xsl] text() handling
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Fri, 14 Jan 2005 18:35:56 -0000
> The normalize-space function returns the argument string with
> whitespace normalized by stripping leading and trailing whitespace and
> replacing sequences of whitespace characters by a single space.
> Whitespace characters are the same as those allowed by the S
> production in XML. If the argument is omitted, it defaults to the
> context node converted to a string, in other words the string-value of
> the context node.
> 
> It looks like XPath 2.0 working draft keeps to this definion.
> 

Yes, except that normalize-space(child::text()) in 1.0 discards all except
the first text node, so if you apply it to

<a>very <!-- note well --> odd</a>

the result is "very". In 2.0 it's a type error to apply the function to a
sequence of more than one item, so you have to decide whether you really
wanted this behavior, in which case you write it as:

   normalize-space(child::text()[1])

or whether you perhaps meant

   normalize-space(string-join(child::text(), " "))

which gives you "very odd".

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

Current Thread