Xml&xsl

Samuel

Erfahrenes Mitglied
Guten Tag die Herren,

ich habe folgendes Problem, ich würde gerne eine Menüstruktur aus einer XML-File via XSL-File in HTML umwandeln.

XML
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="getMenu.xsl"?>

<menu>
	<main activ="true">contacts</main>
		<sub id="0">lustiger hans</sub>
		<sub id="1">freak im kaefig</sub>
		<sub id="2">alles mist</sub>
		<sub id="3">asterix</sub>

		<sub id="4">frank zappa</sub>
	<main>todo-list</main>
	<main>organiser</main>
</menu>

XSL
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html"/>
    
    <xsl:template match="/">
		<xsl:for-each select="menu">
			<ul id="navigation">
				<xsl:for-each select="main">	
					<xsl:element name="li">
						<xsl:element name="a">
							<xsl:attribute name="href">
								<xsl:text>javascript:void(null);</xsl:text>
							</xsl:attribute>
							<xsl:attribute name="onclick">
								getMenu('<xsl:value-of select="." />');
							</xsl:attribute>
							<xsl:value-of select="." />
						</xsl:element>
					</xsl:element>	
					
					<xsl:for-each select="sub">
						<xsl:element name="li">
							<xsl:element name="a">
								<xsl:attribute name="href">
									<xsl:text>javascript:void(null);</xsl:text>
								</xsl:attribute>
								<xsl:value-of select="." />
							</xsl:element>
							<xsl:attribute name="onclick">
								alert('<xsl:value-of select="@id" />');
							</xsl:attribute>
							<xsl:value-of select="." />
						</xsl:element>	
					</xsl:for-each>
							
				</xsl:for-each>
			</ul>
		</xsl:for-each>
    </xsl:template>
    
</xsl:stylesheet>

leider wird nur das Mainmenu ausgegeben. Die "sub-Punkte" werden nicht berücksichtigt.

schöne Grüße
Samuel
 
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html"/>
    
    <xsl:template match="/">
    	<ul id="navigation">
		<xsl:for-each select="menu/main">
			<xsl:element name="li">
				<xsl:element name="a">
					<xsl:attribute name="href">
						<xsl:text>javascript:void(null);</xsl:text>
					</xsl:attribute>
					<xsl:attribute name="onclick">
						getMenu('<xsl:value-of select="." />');
					</xsl:attribute>
					<xsl:if test="@activ">
						<xsl:attribute name="class">
							activ
						</xsl:attribute>
					</xsl:if>
					<xsl:value-of select="." />
				</xsl:element>
			</xsl:element>	
				
			
			<xsl:if test="@activ">
				<xsl:for-each select="//sub">	
					<xsl:element name="li">
						<xsl:element name="a">
							<xsl:attribute name="href">
								<xsl:text>javascript:void(null);</xsl:text>
							</xsl:attribute>
							<xsl:attribute name="class">
								submenu
							</xsl:attribute>
							<xsl:attribute name="onclick">
								showContact(<xsl:value-of select="@id" />);
							</xsl:attribute>
							<xsl:value-of select="." />
						</xsl:element>
					</xsl:element>
				</xsl:for-each>
			</xsl:if>
		</xsl:for-each>
		</ul>
    </xsl:template>
    
</xsl:stylesheet>

Die Erlösung ;)
 
Zurück