Hallo,
Nun stehe ich vor einem (bis jetzt nicht lösbarem) Problem:
Das hier ist die XSL-Datei, die erstellt wurde. Jetzt wollte ich, eine Ausgabe der einzelnen XML-Daten innerhalb der dafür vorgesehen div-Container hervorrufen.Aus Tutorials etc. heraus dachte ich eigentlich, dass eine Programmierung wie folgt aussehen könnte:
<div id="conlinks"> Die XML-Daten sind: <xsl:template match="xmldaten"> <xsl:value-of select="." /> </xsl:template> </div>
Nein, dass kann nicht gehen. Wenn das so ein einem Tutorial stand, wirf den weg, dann ist der unbrauchbar.
Du kannst nicht innterhalb eines xsl:template noch ein xsl:template definieren.
Als Ausgabe erwartete ich dann eigentlich:
" Die XML-Daten sind: "->xmldaten" "
Ws erwartet du an der Stelle _genau_? Soll er die Werte aus dem XML ausgeben, oder soll er dir das XML als solches (sprich die Elemente, Attribute und Text) ausgeben? [1]
Was mir aber Kopfschmerzen bereitet hat ist, dass wenn ich nur "<xsl:apply-templates />" egal an welcher Stelle des XSL-Dokumentes eingebe er mir die kompletten XML-Daten als Ausgabe gibt. Logischerweise ohne formatierung und hintereinander aufgelistet, aber er gibt mir eine Ausgabe.
Das ist normal: du hast zwar keine Templates für die einzelnen XML-Elemente definiert, aber das heisst nicht, dass es keine Templates gibt. Es gibt nämlich die buil-in-Templates im XSL, die dann letztendlich den Textinhalt von den Elementen ausgeben und mit <xsl:apply-templates /> aktivierst du alle Templates: die, die du selbst definiert hast und auch die build-in Templates.
Mein eigentliches Ziel war, den verschiedenen Container unterschiedliche XML-Daten zuzuweisen, um sie optisch schön und geordnet wiederzugeben.
Definiere bitte diese Anforderunge genau. (siehe oben bei [1]!)
Ich bin eigtl mit meinem Latein am Ende. Evtl besteht das Problem darin, dass man CSS nicht mit XML / XSL in dieser Form verbinden kann,
Das hat damit nichts zu tun.
doch frage ich mich dann, warum er mir die Daten durch <xsl:apply templates> wiedergibt, aber nicht durch <xsl:value-of select...>.
<xsl:apply templates> habe ich erklärt, <xsl:value-of select> wählt den _ersten_ Knoten auf dem es zutrifft (bei dir konnte es zusätzlich wegen des verschachtelten xsl:template nicht funktionieren.
Z.B. wenn du im XML so etewas stehen hast:
<daten>
<blubb>a</blubb>
<blubb>b</blubb>
<blubb>c</blubb>
<blubb>d</blubb>
</daten>
und dann <xsl:value-of select="daten/blubb"> verwendets, bekommst immer nur "a" ausgegeben.
Ich danke im Vorraus und bin zuversichtlich über eine (hoffentlich) simple und schnelle Lösung!
Definiere bitte deine Anforderungen genauer.
Grüße
Thomas