xsl-list
[Top] [All Lists]

Re: Node selection based on parent attribute

2002-08-30 09:24:31
Katharine,

Another approach (besides the ones using for-each) is just to use the built-in descent of the tree, as in something like:

<xsl:template match="menu">
  <xsl:if select="ancestor::menu[(_at_)id=$id']">
   <xsl:value-of select="@id"/>
   <!-- copies out this menu's @id if it has an ancestor
        menu with @id = $id -->
  </xsl:if>
  <xsl:apply-templates/>
  <!-- continues the tree traversal in case there are any below -->
</xsl:template>

Make sure the parameter is set to the *value* of the id ('1', '6', whatever) whose descendants you want.

Cheers,
Wendell

At 10:51 AM 8/30/2002, you wrote:
Thanks for that.
Would there be an easy way of making that recursive. So if there were sub/sub nodes under <menu id=6>, ie
<menu id=6>
<menu id=8>
 <menu id=9/>
 <menu id=10/>... and so on
</menu>
</menu>


======================================================================
Wendell Piez                            
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list