Andrej: unterschiedliche Werte aus gleichnamigen XML-Attributen ausgeben

Hallo,
ich hätte folgende Frage.
Ich habe eine XML-Datei, die unter dem selben XML-Attribut z.B. <cc> </cc> verschiedene Daten abspeichert.
So gibt es z.B. <cc> x@y.de </cc> <cc> c@v.de </cc> etc... . Die Liste ist von demjenigen abhängig, der die Daten eingibt. In meiner XSL-Ausgabe wird aber nur der erste in der XML-Datei angegebene <cc>-Wert ausgegeben. Die restlichen <cc>-Einträge werden ignoriert.

Beispiel:

<p><b> cc .:. </b><xsl:value-of select="cc" /></p>

Die Ausgabe ist dann quasi: cc .:. x@y.de

Jetzt möchte ich aber, dass er nicht nur x@y.de ausgibt, sondern auch die restlichen <cc>-Werte, wie "c@v.de"

Leider weiss ich nicht, wie ich zwischen den verschiedenen <cc>-Eingaben unterscheide, sodass XSL erkennt, dass es mehrere <cc>'s gibt und diese dann nacheinander ausgibt.

Eventuell kann mir jemand weiterhelfen. Ich bedanke mich im Vorraus.

Viele Grüße Andrej

  1. Hallo,

    So gibt es z.B. <cc> x@y.de </cc> <cc> c@v.de </cc> etc... . Die

    Dann schreib doch für den Knoten CC ein eigenes template:

    <xsl:template match="cc">
      <xsl:value-of select="." />
    </xsl:template>

    Dann nimmt er für jedes cc Element den jeweiligen Wert. Willst Du alle CC-Inhalte z. B. durch Komma miteinander verbinden, dann nimm stattdessen eine for-Schleife ... siehe hier SelfHTML.

    Hoffe das hilft,
    Grüße,
    Michael

  2. Ok, hab die Lösung selbst gefunden. Für alle die eventuell mal vor dem selben Problem stehen.

    <xsl:value-of select="."> ist der entsprechende Befehl, der alle Werte von <cc> ausgibt.

    Danke trotzdem und Grüße

  3. Hallo,

    ich hätte folgende Frage.
    Ich habe eine XML-Datei, die unter dem selben XML-Attribut z.B. <cc> </cc> verschiedene Daten abspeichert.
    So gibt es z.B. <cc> x@y.de </cc> <cc> c@v.de </cc> etc... . Die Liste ist von demjenigen abhängig, der die Daten eingibt. In meiner XSL-Ausgabe wird aber nur der erste in der XML-Datei angegebene <cc>-Wert ausgegeben. Die restlichen <cc>-Einträge werden ignoriert.

    Beispiel:

    <p><b> cc .:. </b><xsl:value-of select="cc" /></p>

    Die Ausgabe ist dann quasi: cc .:. x@y.de

    Jetzt möchte ich aber, dass er nicht nur x@y.de ausgibt, sondern auch die restlichen <cc>-Werte, wie "c@v.de"

    Ok, hab die Lösung selbst gefunden. Für alle die eventuell mal vor dem selben Problem stehen.

    <xsl:value-of select="."> ist der entsprechende Befehl, der alle Werte von <cc> ausgibt.

    Deine Lösung hilft dem Suchenden deshalb nicht weiter, eil due den Kontext in dem du value-of aufrufst nicht genannt hast.
    Zudem birgt value-of ein Gefahr in sich, das hast du ja auch schon erkannt: nämlich dass unter XSLT 1.0 value-of nur den _ersten_ Knoten, auf dem die Bedingung im select="" zutrifft, behandelt.

    <xsl:value-of select=".">  in einem <template match="cc"> oder <for-each select=""> korrekt.
    Ein "falsches" Ergebnis käme aber bei einer Sturktur wie unten aus:

    <abc>
       <cc></cc>
       <cc></cc>
       <cc></cc>
       <cc></cc>
       ...
    </abc>

    <xsl:template match="abc>
       <xsl:value-of select="cc">
    ....

    In XSLt 2.0 liefert value-of eine Sequenz, d.h. beim Beispiel von oben, würde value-of, den Inhalt von alles cc-Elementen als einer Sequenz zurückgeben.

    Grüße
    Thomas

    Eventuell kann mir jemand weiterhelfen. Ich bedanke mich im Vorraus.

    Viele Grüße Andrej