Subject: RE: Selecting all siblings and self into a node-set
From: <Jarno.Elovirta@xxxxxxxxx>
Date: Mon, 29 Mar 2004 10:27:13 +0300
|
Hi,
> Then I have a template matching "webpage":
>
> <xsl:template match="webpage" mode="meta2">
> <xsl:variable name="menu-names">
> <xsl:value-of select="preceding-sibling::webpage[*]/name"/>
> <xsl:value-of select="name" />
> <xsl:value-of select="following-sibling::webpage[*]/name"/>
> </xsl:variable>
>
> <xsl:value-of select="$menu-names" />
> <xsl:apply-templates mode="meta2" />
> </xsl:template>
[snip]
> which indicates that each "value-of" operator is only
> picking up one node.
>
> How can I get _all_ preceding and following
> node's "name" elements into a single node-set?
In the template above you're creating Result Tree Fragment; use the select attribute if you want to bind a variable to a node-set.
<xsl:variable name="menu-names" select="preceding-sibling::webpage/name | name | following-sibling::webpage/name" />
or simply
<xsl:variable name="menu-names" select="../webpage/name" />
Note that xsl:value-of will extract the string value and if you give it a node-set, it will return "the string-value of the node in the node-set that is first in document order". Use xsl:for-each to go throught the nodes and output their string values.
Cheers,
Jarno - Hypnoskull: We Know It All - We Know All
|