PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : XSL: Eingabedokument unverändert lassen?



McFraggle
17-12-2007, 11:10
Hallo zusammen!

Ich bin absoluter XML/XSL-Neuling, muss nun aber ein XSL-Stylesheet schreiben.
Ich arbeite an einer JSP-Anwendung und nutze einige fertige Tag-Libs. Ein Tag lässt sich von der Interna der Klassenbibliothek eine XML-Ausgabe A erzeugen und baut sie dann über ein XSL-Stylesheet S in HTML-Code um. Nun möchte ich die Ausgabe statt in HTML in einer eigenen XML-Sprache haben.
Das Problem:
Das Eingangsdokument A, dass mit Hilfe des Stylesheet S in das Zieldokument B umformatiert wird, kenne ich nicht. Leider habe ich auch keinen ausreichend tiefen Einblick in die Tag-Lib, um den Aufbau von A zu ergründen. Kann ich das Stylesheet S so umschreiben, dass ich erst einmal das Eingangsdokument A als Ausgabe bekomme? (Also dass gilt A=B?)

Danke für jede Hilfe!

zerix
17-12-2007, 11:37
Hallo,

wenn ich mich richtig erinnere, brauchst du nur in der XSLT-Datei keine Aktionen durchzuführen. Auch keine Templates definieren. Bin mir aber gerade nicht mehr so sicher, da ich schon lange nichts mehr damit gemacht hab.

MFG

zEriX

McFraggle
17-12-2007, 12:34
Danke schon mal!

Also, wenn ich alles innerhalb der stylesheet-tags auskommentiere, bekomme ich ein sehr interessantes Ergebnis.

Das Tag, welches die Transformation durchführen lässt und den HTML-Output erzeugt, ist eigentlich zur Erzeugung einer Tabelle gedacht und stammt aus dem Mondrian-Paket. Mondrian ist ein OLAP-System. Mit der Tag-Lib kann ich eine mdx-Anfrage definieren (ein Tag) und bekomme eine Tabelle als Ergebnis (durch ein weiteres Tag, welches das mdx-Anfrage-Objekt und den Ort des XSL-Sylesheet als Attribute hat).
Wenn das Stylesheet nun leer ist, schreibt das 2. Tag die mdx-Anfrage in die Ausagbe! :confused:

Für jene, die von OLAP/MDX noch nix gehört haben:
Das ist so, als wenn ein Tag, welches eine SQL-Anfrage startet und das Ergebnis als Tabelle darstellt, statt eines Ergebnisses die Original-SQL-Anfrage in die Ausgabe (den http-response) schreibt.

Warum und wo das geschieht, bleibt mir noch schleierhaft. :(

Gibt es weitere Ideen?

McFraggle
18-12-2007, 09:04
Ich fand Hilfe beim Entwickler-Forum. Folgender Inhalt für's Stylesheet macht den Job:

<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
Der Code sieht aus, als wenn man nach zwei Tagen XSL-Erfahrung über meine Frage schmunzeln könnte... :D