This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Node selection based on parent attribute


That's really useful, thanks.

The ammended code seems to be causing Netscape 6 to crash. Can you see a problem with the xslt:

<xsl:param name="countryID" select="menu"/>

<xsl:template match="tree">
<xsl:apply-templates select="menu[@countryID=$countryID]"/>
</xsl:template>

<xsl:template name="menu" match="menu">
<div>
<xsl:attribute name="id">ID<xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="STYLE">visibility:visible;padding-left: 20px;cursor: hand;
</xsl:attribute>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle" nowrap="true">
<xsl:attribute name="STYLE">
padding-left: 7px;font-family: Verdana;font-size: 11px;font-color: black;
</xsl:attribute>
<a>
<xsl:attribute name="href">
<xsl:text>javascript:divCheck('ID</xsl:text><xsl:value-of select="@id"/><xsl:text>')</xsl:text>
</xsl:attribute>
<xsl:value-of select="@description"/>
</a>
</td>
</tr>
</table>
<xsl:if test="count(menu) > 0">
<xsl:apply-templates select="menu"/>
</xsl:if>
</div>
</xsl:template>
</xsl:stylesheet>

I've got a recursive call in there. But when I take it out Netscape still seems to be having problems. My xml structure is:
<menu id="6" countryID="1" description="Menu6" href="">
<menu id="7" countryID="1" description="Menu7" href="">
</menu>
</menu>

Thanks in advance.
Kate
From: David Carlisle <davidc@nag.co.uk>
Reply-To: xsl-list@lists.mulberrytech.com
To: xsl-list@lists.mulberrytech.com
Subject: Re: [xsl] Node selection based on parent attribute
Date: Fri, 30 Aug 2002 15:29:16 +0100

> passing through a parameter of 1 using:

when the param is 1 control passes first to the tree template...

<xsl:template match="tree">
  <xsl:apply-templates select="menu"/>
</xsl:template>

so now the current node list is all the menu elements of tree,
so first the control passes to the menu template, with the current node
being the first menu (which has id=1).

<xsl:template match="menu">
   <xsl:for-each select="menu[@id=$id]/menu">
         <xsl:value-of select="@id"/>
    </xsl:for-each>
</xsl:template>

This selects all the menu children of the current node which have id=1.

there are no such children so nothing is returned.





i think that what you want might be

<xsl:template match="tree">
  <xsl:apply-templates select="menu[@id=$id]/menu"/>
</xsl:template>

<xsl:template match="menu">
         <xsl:value-of select="@id"/>
</xsl:template>

David

_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.

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



_________________________________________________________________
Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]