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>
--~--