xsl-list
[Top] [All Lists]

RE: Selecting all siblings and self into a node-set

2004-03-29 00:27:13
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
  
<Prev in Thread] Current Thread [Next in Thread>