xsl-list
[Top] [All Lists]

RE: Can I use a boolean variable in an xsl:if test

2005-02-09 01:33:18

beware though that that will get you burned again when you 
start using XSLT2 scented water.

xsl:value-of returns a text node with string value the string 
value of the expression. This is subtly or not so subtly 
different from a string. It doesn't make so much difference 
in XSLT1 as the only way to carry strings around is to put 
them in text nodes, but in xpath2 you can have sequences of 
strings and sequences of text nodes (and sequences that 
contain both strings and text nodes) the rules for the two 
cases (and in particular whether spaces are automatically 
inserted between adjacent
items) are different on the two cases.

Yes, but I think the 2.0 way makes more sense.

Just to make sure we are talking about the same thing (and to help
cement my knowledge), consider:

<root>
  <node>foo</node>
  <node>bar</node>
</root>

In 1.0:

<xsl:template match="root">
  <xsl:value-of select="node"/>
</xsl:template>

Returns:

'foo'

Because in XSLT 1.0 'first item semantics' apply when a value-of is
performed on a sequence.

In 2.0 the same template would return:

'foo bar'

That is, all items in the sequence with a single space as a seperator.
In order to remove/control the space, we can use the @separator on
value-of:

<xsl:value-of select="node" separator=""/>

Which would produce:

'foobar'

For me, that's much more intuitive than just picking the first one.
Another plus for 2.0 :)

Of course, if there is another sequence related area to get burned on
please post an example - it's good to know the gotchas up front.

cheers
andrew

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--