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