unterschiedliche Werte aus gleichnamigen XML-Attributen ausgeben
Andrej
- xsl
0 MichaelR0 Andrej0 Thomas J.S.
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
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
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
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