Aaron Israel: xsl:ïf bei zwei schleifen

Hi,

ich habe folgendes Problem:

Ich programmiere gerade an einem News System.
In diesem News System hab ich historisch sortiert alle News die in einer XML file gespeichert sind.
Die Seite hat ein kleines Feature man kann die entrys auf und zu klappen. (realisiert mit java script und css d.h. der artikel ist zweimal drin eine kleine und eine grosse die je nachdem was man gerade geklickt hat verschwinden oder erscheinen)

Jeder news entry hat ein <group>OM<group> tag.

In einem anderen tree habe ich die verschiedenen groups gespeichert

<groups>
   <group>
     <name>Olympic Marketing</name>
     <id>OM</id>
   </group>
</groups>

Ich moechte nun das in der Navigation die ganzen News-Gruppen namen stehen die wenn man draufklickt alle artikel die dazu gehoeren (aufklappen).

dazu brauch ich aber eine schleife die die gruppen ab arbeitet und dann die Group-ID mit den <group> tags des anderen trees abgleicht und dann jeweils die position() des entrys ausspuckt damit ich in den link der gruppe die ganzen <div> ids angeben kann damit die unfoldet werden.

ALSO:

wie ist es moeglich in einem xsl:if werte anzusprechen die jeweils aus anderen trees stammen also wie ist es moeglich ein wert aus dem group tree mit allen werten aus dem entry tree zu vergleichen und dann den naechsten wert aus dem group-tree wieder mit allen entrys abzugleichen sodas ich in das onClick="" wirklich fuer jeden <div> die maximize funktion aufrufen kann.

  1. Hallo Aaron Israel,

    es fällt mir nich ganz leicht nachzuvollziehen, was du eigentlich suchst. Vielleicht etwas in der Art?

    <xsl:for-each select="entry/group">
      Inhalt merken auf Variable id
      <xsl:for-each select="/descendant::groups/group">
        Vergleich: Inhalt von Tag "id" mit Inhalt von Variable "id"
        falls gleich: Tag "name" in die Liste aufnehmen
      </xsl:for-each>
    </xsl:for-each>

    Gruß Mia

  2. Hallo,

    Ich moechte nun das in der Navigation die ganzen News-Gruppen namen stehen die wenn man draufklickt alle artikel die dazu gehoeren (aufklappen).

    So weit ist das Problem nachvollzuziehen.

    dazu brauch ich aber eine schleife die die gruppen ab arbeitet und dann die Group-ID mit den <group> tags des anderen trees abgleicht

    Das ist auch noch klar.

    und dann jeweils die position() des entrys ausspuckt damit ich in den link der gruppe die ganzen <div> ids angeben kann damit die unfoldet werden.

    Kannst du das bitte nochmal erklären?

    ALSO:

    wie ist es moeglich in einem xsl:if werte anzusprechen die jeweils aus anderen trees stammen also wie ist es moeglich ein wert aus dem group tree mit allen werten aus dem entry tree zu vergleichen

    Am einfachsten so:
    <xsl:template match="groups">
    <xsl:for-each select="group">
      <xsl:variable name="groupid" select="id" />
      <!-- was uch immer du noch hier haben will, z.B. name der gruppe ausgeben etc. -->
      <xsl:apply-templates select="/andererzweig/entry[group = $groupid]" />
    </xsl:for-each>
    </xsl:template>

    <xsl:template match="entry">
    <!-- template für die einzelnen newseinträge -->
    </xsl:template>

    Wenn du nach den Stichwörter >key xsl:key xsl< und nach meinem Namen im Archiv suchst, findest du auch andere Lösungen.

    Grüße
    Thomas

    --
    Surftip: kennen Sie schon Pipolino's Clowntheater?
    http://www.clowntheater-pipolino.net/