Thomas J.S.: XML Daten in XSL einbinden unter Benutzung von CSS

Beitrag lesen

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