[xsl] Selecting all siblings and self into a node-set

Subject: [xsl] Selecting all siblings and self into a node-set
From: Randolph Kahle <randy.kahle@xxxxxxxxxxxxx>
Date: Sun, 28 Mar 2004 16:37:03 -0700
I would like to build a node-set that I can use to
create a menu-bar in an HTML display.

I have an xml file that describes the layout of
the website with the following content:

<<<<<

<website>
   <webpage>
     <name>home</name>
	<file>../xml/home.xml</file>
   </webpage>
   <webpage>
     <name>clients</name>
     <file>../xml/clients.xml</file>
   </webpage>
   <webpage>
     <name>contact</name>
     <file>../xml/contact.xml</file>
   </webpage>
</website>

 >>>>>

I load this XML file into my XSL style sheet with:

<xsl:template match="/site">
   <xsl:variable name="menutree" select="document(structure/file)"/>
   <xsl:apply-templates select="$menutree" mode="meta2" />
</xsl:template>

with the variable "menutree" containing the parsed file.

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>


I expect the output to be:

<<<<<

homeclientscontact

homeclientscontact

homeclientscontact

 >>>>>

but instead I get:

<<<<<

homeclients

homeclientscontact

homecontact

 >>>>>

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?

Thank you!

Randy

[****** removed an attachment of type application/pkcs7-signature which had a name of smime.p7s]

Current Thread