XML via XSLT in HTML ?

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

  • XML via XSLT in HTML ?

    Hallo,
    ich bin leider neu auf diesem gebiet und habe daher ein paar grundlegende Fragen.
    Ich bin gerade dabei eine XML Datei via XSLT in eine HTML Datei zu transferieren, leider bin ich dabei auf ein Hindernis gestoßen für das ich bis jetzt keine annehmbare Lösung gefunden habe.
    Ich möchte unter anderem eine Tabelle generieren mit dem Kopf „Group“ und „Member“.
    Der Inhalt der Zielen ist jeweils ein Gruppenname und „n“ Member-Namen mit Komma getrennt.
    Die Anzahl der Member kann von Gruppe zu Gruppe unterschiedlich sein „0“ bis „n“.
    Ich habe es bis her nur über eine If Anweisung realisieren Können, dies ist aber nicht sinnvoll da ich die Mindestanzahl der Member so im XSLT code fest vorgeben muss.
    Da meines Wissens es im XSLT keine For-Schleife existieren habe ich es mit einer for-each versucht leider ist mir diese nicht gelungen.

    Die gewünschte Ausgabe sollte in einer Tabelle wie folgt ausgegeben werden:

    Group Member
    FFH [ Manni, Lilo, Digi, Susi ]

    Falls kein Member in der Gruppe vorhanden ist soll die Ausgabe wie folgt sein:

    Group Member
    KLM [ ]


    Für Lösungen/Anregungen bin ich sehr Dankbar.


    XSLT code mit IF-Schleife:

    <xsl:template match="Group">
    <table width="80%" border="1" cellspacing="0" cellpadding="2"><tr bgcolor="#808080">
    <th>Group</th>
    <th>Member</th>
    </tr>
    <tr>
    <td><xsl:value-of select="@Name" /></td>
    <td>[
    <xsl:if test="./Member[1]=./Member[last()]">
    <xsl:value-of select="./Member[1]" /> <w/>
    </xsl:if>
    <xsl:if test="./Member[1]!=./Member[last()]">
    <xsl:value-of select="./Member[1]" />, <w/>
    </xsl:if>
    <xsl:if test="./Member[2]=./Member[last()]">
    <xsl:value-of select="./Member[2]" /> <w/>
    </xsl:if>
    <xsl:if test="./Member[2]!=./Member[last()]">
    <xsl:value-of select="./Member[2]" />, <w/>
    </xsl:if>
    <xsl:if test="./Member[3]=./Member[last()]">
    <xsl:value-of select="./Member[3]" /> <w/>
    </xsl:if>
    <xsl:if test="./Member[3]!=./Member[last()]">
    <xsl:value-of select="./Member[3]" />, <w/>
    </xsl:if>
    <xsl:if test="./Member[4]=./Member[last()]">
    <xsl:value-of select="./Member[4]" /> <w/>
    </xsl:if>
    <xsl:if test="./Member[4]!=./Member[last()]">
    <xsl:value-of select="./Member[4]" />, <w/>
    </xsl:if>
    ]
    </td>
    </tr>
    </table>
    </xsl:template>
    </xsl:stylesheet>


    Anbei ein Ausschnitt der XML Source :

    <?xml version="1.0" encoding="UTF-8" ?>
    <Group Name="FFH" >
    <Member>Manni</Member>
    <Member>Lilo</Member>
    <Member>Digi</Member>
    <Member>Susi</Member>
    </Group>
    <Group Name="KLM" >
    <Member></Member>
    </Group>



    Gruss
    Danke
    Addy

  • #2
    wenn du versprichst nie wieder "if-schleife" zu sagen...

    in der xml datei fehlt ein umschließender tag (davon kann es einen und NUR einen geben).

    Code:
    <?xml version="1.0" encoding="UTF-8" ?>
    <Grouplist>
      <Group Name="FFH" >
        <Member>Manni</Member>
        <Member>Lilo</Member>
        <Member>Digi</Member>
        <Member>Susi</Member>
      </Group>
      <Group Name="KLM" >
        <Member></Member>
      </Group>
    </Grouplist>
    Code:
    <xsl:template match="Grouplist">
      <table><tr>
    
    die table angaben sind jetzt einfach mal rausgeflogen, 
    weil deprecated und besser gestern als morgen durch css ersetzt
    
          <th>Group</th>
          <th>Member</th>
        </tr>
    
    erste schleife für jede gruppe
        <xsl:for-each select="Group">
          <tr>
            <td><xsl:value-of select="@Name" /></td>
            <td>[
    
    noch eine handelsübliche for-each schleife
              <xsl:for-each select="Member">
    
    zum spaß noch sortiert
              <xsl:sort select="."/>
                <xsl:value-of select="."/>
    
    , nur setzen, wenn es nicht der letzte name ist
                <xsl:if test="position()!=last()">, </xsl:if>
              </xsl:for-each>
            ]</td>
          </tr>
        </xsl:for-each>
      </table>
    </xsl:template>

    Kommentar

    Lädt...
    X