Verschachteltes for-each

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Verschachteltes for-each

    Hallo,

    ich bin relativ neu in der ganzen XML-Sache. Echt toll, was man da alles machen kann...
    Ich beiße mir nun seit Tagen die Zähne an einer Aufgabe aus:

    Es existiert eine Art Katalog mit folgender Struktur:

    <Katalogteil release="yes">
    <id>BaugruppeXY</id>
    <components>
    <component release="yes">
    <id>KomponenteXY</id>
    </component>
    </Katalogteil>

    Es gibt verschiedene Katalogteile die eine Freigabe haben oder auch nicht. Diese Katalogteile haben je einen Namen (Baugruppe) und bestehen aus unterschiedlich vielen Komponenten, die wiederum entweder freigegeben sind oder nicht.


    Durch ein Skript soll nun eine Liste (HTML) erstellt werden, die die nicht freigegebene (release=“no“) Baugruppen auflistet.
    Dies wäre wohl am einfachsten durch zwei Listen darzustellen:

    1. Generell gesperrte Baugruppen (Katalogteil release="no")

    2. Wegen gesperrter Komponenten (component release="no">) nicht freigegebene Baugruppen. (BaugruppeXY: Komponente XY gesperrt)

    Die erste Liste bereitet mir kein größeres Problem:

    <p>Baugruppe(n) generell gesperrt:</p>
    <ul>
    <xsl:for-each select="Katalogteil">
    <xsl:if test="@release='no'">
    <li><xsl:value-of select="id"/></li>
    </xsl:if>
    </xsl:for-each>
    </ul>

    Bei der zweiten Liste komme ich jetzt aber nicht mehr weiter. Natürlich kann man durch das gleiche Prinzip wie bei erstens die gesperrten Komponenten suchen (anstatt <xsl:for-each select="Katalogteil"> einfach <xsl:for-each select="Katalogteil/components/component">).

    Aber es soll ja auch die betreffende Baugruppe mit aufgelistet werden. Diese liegt dummerweise in einer anderen Ebene. Ich habe verschiedene Sachen ausprobiert. Am meisten Hoffnung hatte ich in eine zweite „Schleife“ in der eigentlich for-each-„Schleife“. Das scheint aber bei XML grundsätzlich nicht zu gehen. (oder ich hab’s einfach falsch gemacht… J)

    Ich würde mich echt freuen wenn jemand einen Vorschlag hätte.

    Vielen Dank und liebe Grüße,

    Peter