Advertisement

09.26.2008 at 07:49AM PDT, ID: 23766199 | Points: 500
[x]
Attachment Details

XSLT problem when parsing .xml for use in navigation

Asked by dowdyrowdy in Extensible Stylesheet Language Transformation (XSLT), Extensible Markup Language (XML)

Tags:

Hi All,

I have inherited this code that outputs a menu within a web page, the problem is it doesn't display the child elements if a parent is clicked on.

I don't really know a great deal about xsl so any help would be very much appreciated.

Many Thanks.
Start Free Trial
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
<rootMenu>
	<Menu>
		<MenuID><![CDATA[0E8AD4DA-4FB3-4139-9BE2-4B5CAEB71901]]></MenuID>
		<MenuText><![CDATA[Home]]></MenuText>
		<MenuTemplate><![CDATA[ac-home.asp]]></MenuTemplate>
		<MenuPosition><![CDATA[1]]></MenuPosition>
		<MenuPermission admin="yes" sales="yes" client="yes" prospect="yes"  />
	</Menu>
	<Menu>
		<MenuID><![CDATA[E3F8BFA3-841F-41FC-95F7-E0B69BE4BC21]]></MenuID>
		<MenuText><![CDATA[About]]></MenuText>
		<MenuTemplate><![CDATA[ac-content.asp]]></MenuTemplate>
		<MenuPosition><![CDATA[2]]></MenuPosition>
		<MenuPermission admin="yes" sales="yes" client="yes" prospect="yes"  />
		<Menu>
			<MenuID><![CDATA[D8777F37-1FCB-48B4-A27B-506A03F9E496]]></MenuID>
			<MenuText><![CDATA[Key Facts]]></MenuText>
			<MenuTemplate><![CDATA[ac-content.asp]]></MenuTemplate>
			<MenuPosition><![CDATA[1]]></MenuPosition>
			<MenuPermission admin="yes" sales="yes" client="yes"  />
		</Menu>
		<Menu>
			<MenuID><![CDATA[998C17C7-8206-4721-BEE1-2E2505B8FE43]]></MenuID>
			<MenuText><![CDATA[Team]]></MenuText>
			<MenuTemplate><![CDATA[ac-team.asp]]></MenuTemplate>
			<MenuPosition><![CDATA[3]]></MenuPosition>
			<MenuPermission admin="yes" sales="yes" client="yes" prospect="yes"  />
		</Menu>
                        </menu>
<rootmenu>
'xslt file
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" />
<!-- this is the template to be used to display the nodes named Menu-->
<xsl:template match="rootMenu">
<div id="menu">
<ul>
<!-- loop through all the nodes named Menu at the top level -->
<xsl:for-each select="Menu[MenuPermission/@admin = 'yes']">
<xsl:apply-templates select="current()" />
</xsl:for-each>
</ul>
<div class="clear"></div>
<ul class="menu">
<li><a href="logout.asp" title="Log Out">Log Out</a></li>
</ul>c
<div class="clear"></div>
<ul class="intranet">
<li><a class="selected" href="on_the_road/" title="Intranet">Intranet</a></li>
</ul>
 
</div>
</xsl:template>
<!-- this is the template to be used to display the nodes named Menu -->
<xsl:template match="Menu">
<li>
<a>
<xsl:if test="(.//@selected = 'true') and (count(descendant::Menu) &gt; 0)">
<xsl:attribute name="class">
selected
</xsl:attribute>
</xsl:if>
<xsl:if test="(.//@selected = 'true') and (count(descendant::Menu) = 0) and count(ancestor::*) = 1">
<xsl:attribute name="class">
selectedsingle
</xsl:attribute>
</xsl:if>
<xsl:if test="(.//@selected = 'true') and (count(descendant::Menu) = 0) and count(ancestor::*) &gt; 1">
<xsl:attribute name="class">
selected
</xsl:attribute>
</xsl:if>
<xsl:attribute name="href">
<xsl:value-of select="MenuTemplate" />?menuId=<xsl:value-of select="MenuID" />
<!--_test_menu.asp?menuId=<xsl:value-of select="MenuID" />-->
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="MenuText" />
</xsl:attribute>
<xsl:value-of select="MenuText" />
</a>
<!-- check for children-->	
 
<xsl:if test="(count(descendant::Menu) &gt; 0) and (.//@selected = 'true')">
<ul>
<xsl:for-each select="(Menu[MenuPermission/@admin = 'yes'])">
<!-- apply the necessary template -->
<xsl:apply-templates select="current()" />
</xsl:for-each>
</ul>
</xsl:if>
</li>
</xsl:template>
</xsl:stylesheet>
[+][-]09.26.2008 at 08:01AM PDT, ID: 22580204

At Experts Exchange, members can ask their questions to thousands of technology professionals, also known as Experts. Experts compete and collaborate to answer those questions by leaving comments like this one.

Start your 7-day free trial to view this Expert Comment or ask the Experts your question.

 
 
Loading Advertisement...
20080716-EE-VQP-32 - Hierarchy / EE_QW_2_20070628