Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Menüstruktur aus XML mittels XSL in XHTML wandeln [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Menüstruktur aus XML mittels XSL in XHTML wandeln


 
DAI_BA
25-07-2008, 14:43 
 
Hallo,

ich habe eine XML-Datei erstellt, in der die Struktur eines Menüs abgebildet ist, daß ich per XSL als XHTML ausgeben möchte.
Bisher funktioniert das System einwandfrei mit einer Navigationsebene - die Links werden erzeugt, der Quellcode ist valide.
Jedoch bin ich mir nicht sicher, wie ich aus einer XML-Quelle mit einer beliebig langen (unbestimmten) Navigationstiefe mittels XSL den XHTML-Code generiere. Ich möchte also ab einem bestimmten Punkt alle (verschachtelten) Knoten durchlaufen und daraus für die Navigation Links erzeugen, die in verschachtelte "ul"- und "li"-Tags eingeschlossen sind.
Kann mir jemand bei dieser Problematik behilflich sein?

Vielen Dank vorab und viele Grüße.

P.S. hier der Code aus der XSL-Datei..

<ul>
<xsl:for-each select="navigation_item">
<xsl:element name="li">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="@href"/>
</xsl:attribute>
<xsl:attribute name="title">
<xsl:value-of select="@title"/>
</xsl:attribute>
<xsll:value-of select="@name"/>
</xsl:element>
<xsl:if test="count(subnavigation) &gt; 0">
<xsl:element name="ul">
<xsl:for-each select="subnavigation">
<xsl:element name="li">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="@href"/>
<xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="@title"/>
</xsl:attribute>
<xsl:value-of select="@name"/>
</xsl:element>
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:if>
</xsl:element>
</xsl:for-each>
</ul>

 
Quetschi
25-07-2008, 17:30 
 
Kommt letztlich auf deine Xml-Struktur an - bei mir hat so ein xsl mal so ausgesehen (mit beliebiger Tiefe der Navi-Struktur):<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="xml" encoding="UTF-8"/>

<xsl:template match="/kategorien">
<root>
<h2>Shop-Rubriken</h2>
<ul>
<xsl:apply-templates select="kategorie" />
</ul>
</root>
</xsl:template>

<xsl:template match="kategorie">
<xsl:for-each select="self::kategorie">
<xsl:if test="childIsFilled = 'ja'">
<li>
<a>
<xsl:if test="@active='active'"><xsl:attribute name="class">active</xsl:attribute></xsl:if>
<xsl:attribute name="href">/shop/<xsl:value-of select="name_url" />.html</xsl:attribute><xsl:value-of select="name" />
</a>
<xsl:if test="count(kategorie) &gt; 0"><ul><xsl:apply-templates select="kategorie"/></ul></xsl:if>
</li>
</xsl:if>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

EDIT:
Smilies deaktiviert da Code sonst unbrauchbar.


Alle Zeitangaben in WEZ +2. Es ist jetzt 03:12 Uhr.