Thomas J.S.: unterschiedliche Werte aus gleichnamigen XML-Attributen ausgeben

Beitrag lesen

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