Re: [xsl] A sequence of more than one item is not allowed as the value of item

Subject: Re: [xsl] A sequence of more than one item is not allowed as the value of item
From: David Carlisle <davidc@xxxxxxxxx>
Date: Wed, 1 Jun 2005 17:41:30 +0100
> I'd have to read the spec

in particular, reading 
http://www.w3.org/TR/xslt20/#constructing-simple-content
reveals the answer.

 <xsl:variable name="foo" as="item()*">
   <xsl:text/>abc<xsl:sequence select="'def'"/>
 </xsl:variable>
 
$foo is a sequence of length three. 
An empty text node
a text node with string value "abc"
and a string "def"



 <xsl:variable name="foo2" as="item()*">
   <xsl:text/>abc<xsl:value-of select="'def'"/>
 </xsl:variable>
 
$foo2 is a sequence of length three. 
An empty text node
a text node with string value "abc"
and a text node with string value "def"




So what happens when you do
<xsl:value-of select="$foo" separator=","/>
<xsl:value-of select="$foo2" separator=","/>

Well the 6 stages in the above referenced section get applied.

stage 1 is dicarding zero length text nodes so now
$foo is 
a text node with string value "abc"
and a string "def"

and $foo2 is
a text node with string value "abc"
and a text node with string value "def"


stage 2 is merging adjacent text nodes so now
$foo is 
a text node with string value "abc"
and a string "def"

and $foo2 is
a text node with string value "abcdef"


stage 3 converts from nodes to atomic values so now
$foo is 
a string "abc"
and a string "def"

and $foo2 is
a string "abcdef"

stage 5 is concatenating all the sequence together, inserting the
separator if one is supplied or a space if not, so now

$foo is 
a string"abc,def"

and $foo2 is 
a string"abcdef"

Voila....

David

________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________

Current Thread