Subject: RE: Can I use a boolean variable in an xsl:if test
From: "Andrew Welch" <ajwelch@xxxxxxxxxxxxxxx>
Date: Wed, 9 Feb 2005 08:33:18 -0000
|
> 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
| Current Thread |
|
Andrew Welch - 8 Feb 2005 16:16:06 -0000
Andrew Welch - 9 Feb 2005 08:35:52 -0000 <=
Pawson, David - 9 Feb 2005 11:06:43 -0000
|
|