PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [XSLT] XML File 1:1 in HTML Div kopieren


Durcairion
2008-01-16, 13:38:47
Hallo,

Ich stehe gerade vor dem Problem, dass ich gerne ein XML File, auf welches eine XSLT Transformation zu HTML angewendet wird, komplett also 1:1 in ein verstecktes DIV kopieren möchte.

Folgendes Beispiel:

XML File:

<root>
<tag1>a</tag1>
<tag2>b</tag2>
</root>

Hierauf wende ich nun eine XSLT Transformation an um den Inhalt "a" und "b" in einer HTML Seite anzuzeigen.

Nun hätte ich gerne, dass am Ende des HTML Files folgendes steht:

<div style="display:none;">
<root>
<tag1>a</tag1>
<tag2>b</tag2>
</root>
</div>

D.h. einfach eine komplette 1:1 Kopie des XML Files.

Kann mir jemand dabei behilflich sein? Ich finde einfach keine Lösung. Ich habe es schon mit <xsl:copy-of select="document(PFAD)"/> versucht, jedoch wurde das XML File hierbei fehlerhaft kopiert d.h. aus attributname="?" wurde dann attributname=""? usw. Darüber hinaus weiß ich auch nicht wie ich den Pfad des aktuellen XML Files rausbekomme, da ich die XSLT ja nicht immer auf die gleiche XML File anwende, müsste der Pfad dynamisch gefunden werden.

Weiß jemand wie ich mir eine 1:1 Kopie des XML Files anlege, auf welches die XSLT File gerade angewendet wird?

Vielen Dank im Voraus,
soucy

Bietchiebatchie
2008-01-16, 14:55:40
Hmm... warum nicht zuerst xlst drüberlaufen lassen und danach das ursprüngliche xml-file in das entstandene html-file reinkopieren? (einfach am schluss vor dem schließenden html-tag)

Durcairion
2008-01-16, 14:56:31
Genau das war meine Frage wie ich das mit XSLT realisiere?

Bietchiebatchie
2008-01-16, 21:38:58
Warum xlst für sowas? Ich bin sicherlich kein xlst-"Profi", aber was du vorhast, fällt imo nicht den Aufgabenbereich von xlst. Du willst nichts transformieren, sondern einen bestehenden hmlt-Text ergänzen.

Nochmal, wo liegt das Problem: Im schlimmsten aller Fälle machst du einen Einzeiler in einer Script-Sprache deiner Wahl à la Replace"</html>" mit xml-tralalala + "</html">.

Durcairion
2008-01-17, 10:27:34
Ich verwende aber keine andere Scriptsprache.

Ich habe eine Log XML File in die ich folgendes einfüge sobald der Benutzer die Log im Programm anzeigen will:

<?xml-stylesheet type="text/xsl" href="MyStyleSheet.xslt"?>

Anschließend, zeige ich die XML File im Browser an (Welcher die XML dann anhand des StyleSheets als HTML Seite anzeigt). Wenn ich nun im Browser Seite speichern unter... mache, würde ich gerne die Plain XML File in einem DIV mit in die .html speichern, so das wenn mir jemand die HTML Page schickt ich trotzdem die XML File habe um diese dann bequem auswerten zu können.

Daher müsste ich das schon mit XSLT realisieren.

Oder wie sollte das sonst gehen?

Gast
2008-01-18, 10:32:40
Geht das nicht mit copy-of?

Durcairion
2008-01-18, 10:38:39
Geht das nicht mit copy-of?

Auszug aus meinem 1. Post

Ich habe es schon mit <xsl:copy-of select="document(PFAD)"/> versucht, jedoch wurde das XML File hierbei fehlerhaft kopiert d.h. aus attributname="?" wurde dann attributname=""? usw. Darüber hinaus weiß ich auch nicht wie ich den Pfad des aktuellen XML Files rausbekomme, da ich die XSLT ja nicht immer auf die gleiche XML File anwende, müsste der Pfad dynamisch gefunden werden.

Thomas(:
2008-01-19, 18:38:13
Der Gast mit copy-of war ich, war net daheim... Und bei mir funktioniert das auch:

log.xml:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="log.xsl"?>
<logfile>
<entry>Berlin, 14.00, die Frisur hält</entry>
<entry>London, 18.00, Regen, die Frisur hält</entry>
<entry>London, 18.10, Frisur kaputt, Regenschirm wurde geklaut</entry>
</logfile>

log.xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<body>
<h3>Logfile:</h3>
<ul>
<xsl:for-each select="logfile/entry">
<li><xsl:value-of select="."/></li>
</xsl:for-each>
</ul>
<h3>Orginal:</h3>
<pre>
<xsl:copy-of select="logfile"/>
</pre>
</body>
</html>
</xsl:template>

</xsl:stylesheet>


Falls das nicht ist was du willst, hab ich die Frage falsch verstanden.