Menüstruktur aus XML mittels XSL in XHTML wandeln

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Menüstruktur aus XML mittels XSL in XHTML wandeln

    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..
    PHP-Code:
    <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

  • #2
    Kommt letztlich auf deine Xml-Struktur an - bei mir hat so ein xsl mal so ausgesehen (mit beliebiger Tiefe der Navi-Struktur):
    PHP-Code:
    <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.
    Zuletzt geändert von Quetschi; 25.07.2008, 16:35.
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar

    Lädt...
    X