XML Dokument kopieren
Sandra
- xsl
0 Tom2 (der authentifizierte)0 Sandra
0 Thomas J.S.0 Sandra0 Sandra0 Thomas J.S.
Hallo beisammen,
ich habe zu meinem Thema eigentlich schon einen Thread hier gefunden, der mir auch schon relativ gut weiterhilft "XML Dokument kopieren und ergänzen" (http://forum.de.selfhtml.org/archiv/2005/8/t113906/), jedoch gibt es da bei mir noch ein kleines Problem. In diesem Thread sind keine Attribute (inkl. Wert) vorhanden, die kopiert werden müssen. Ich müsste das aber machen, komm aber grad nicht so klar, wie das funktionieren soll.
Bei mir werden die Attribute einfach als Tags rüberkopiert.
Soll heißen, sagen wir mal wir hätten folgenden XML-Dokument-Ausschnitt:
<mitarbeiter name="Meier" vorname="Klaus"/>
<chef name="Huber" vorname="Max"/>
sieht bei mir, wenn ich es nach dieser Anleitung aus dem oben genannten Thread mache wie folgt aus:
<mitarbeiter>MeierKlaus</mitarbeiter>
<chef>HuberMax</chef>
Ich hätte die ganze Sache aber gern 1 zu 1 rüberkopiert, jemand ne ahnung wie das geht?
PS: Des weiteren habe ich dann vor, an einer bestimmten Stelle, also wenn ein bestimmtes Tag (sagen wir einfach mal <chef/>) vorkommt, ein komplettes dokument statt dieses Tags einzufügen. Also chef hätte dann zum beispiel noch ein Attribut dokument="chefgehalt.xml", würde ich gerne dieses XML-File noch einfügen.
Mir würde es auch reichen, wenn mir jemand bei dem ersten Problem helfen kann, für eine Lösung des zweiten Problems wäre ich natürlich aber auch dankbar.
Mfg,
Sandra
Hallo
Ich hätte die ganze Sache aber gern 1 zu 1 rüberkopiert, jemand ne ahnung wie das geht?
Mit dem copy-of-Element sollte dies gehen.
Also chef hätte dann zum beispiel noch ein Attribut dokument="chefgehalt.xml", würde ich gerne dieses XML-File noch einfügen.
Dazu würde ich mir die document-Funktion anschauen.
Gruss & HTH
Tom2
Hallo nochmal
Mit dem copy-of-Element sollte dies gehen.
Das funktioniert einwandfrei, danke.
Aber wie kann ich den denn dann mitten im Kopieren unterbrechen, damit ich das andere Dokument einfügen kann?
Denn wenn ich vorher bzw. nachher (also vor/nach dem copy-of-Aufruf) mit einer if bzw. for-each Abfrage, nach dem Knoten suche und dann testweise etwas neues einsetze, dann wird es je nachdem am anfang oder ende des xml-dokuments eingefügt....
Hallo,
[...] Ich müsste das aber machen, komm aber grad nicht so klar, wie das funktionieren soll.
Bei mir werden die Attribute einfach als Tags rüberkopiert.
Soll heißen, sagen wir mal wir hätten folgenden XML-Dokument-Ausschnitt:
<mitarbeiter name="Meier" vorname="Klaus"/>
<chef name="Huber" vorname="Max"/>sieht bei mir, wenn ich es nach dieser Anleitung aus dem oben genannten Thread mache wie folgt aus:
<mitarbeiter>MeierKlaus</mitarbeiter>
<chef>HuberMax</chef>Ich hätte die ganze Sache aber gern 1 zu 1 rüberkopiert, jemand ne ahnung wie das geht?
<xsl:template match="Name-des-Elements">
xsl:copy
<xsl:copy-of select="@*"/>
xsl:apply-templates/
</xsl:copy>
</xsl:template>
PS: Des weiteren habe ich dann vor, an einer bestimmten Stelle, also wenn ein bestimmtes Tag (sagen wir einfach mal <chef/>) vorkommt, ein komplettes dokument statt dieses Tags einzufügen. Also chef hätte dann zum beispiel noch ein Attribut dokument="chefgehalt.xml", würde ich gerne dieses XML-File noch einfügen.
Siehe --> http://forum.de.selfhtml.org/archiv/2006/5/t128853/#m832859
Grüße
Thomas
Hi,
PS: Des weiteren habe ich dann vor, an einer bestimmten Stelle, also wenn ein bestimmtes Tag (sagen wir einfach mal <chef/>) vorkommt, ein komplettes dokument statt dieses Tags einzufügen. Also chef hätte dann zum beispiel noch ein Attribut dokument="chefgehalt.xml", würde ich gerne dieses XML-File noch einfügen.
Siehe --> http://forum.de.selfhtml.org/archiv/2006/5/t128853/#m832859
Kann man da bei der angabe von allen Knoten, die nicht verändert werden sollen, das ganze nicht einfach umkehren und die knoten angeben, die verändert werden sollen?
Ohje, jetzt hab ich noch ne andere Idee,
ist es möglich, dass wenn ich jetzt beim auslesen (also das spätere verarbeiten... hat jetzt nix mehr mit kopieren zu tun) des xml-files einfach sage, ok, wenn ich an der stelle angekommen bin (wo ich vorher eigentlich das andere File einfügen wollte), dann wechsel ich einfach in das andere File, und lies da weiter aus?
Mfg,
Sandra
Hallo,
Ohje, jetzt hab ich noch ne andere Idee,
Ich auch: sammele deine Ideen und versuche nicht 50 davon auf einmal umzusetzen. Funktioniert nämlich nicht. ;-)
ist es möglich, dass wenn ich jetzt beim auslesen (also das spätere verarbeiten... hat jetzt nix mehr mit kopieren zu tun) des xml-files einfach sage, ok, wenn ich an der stelle angekommen bin (wo ich vorher eigentlich das andere File einfügen wollte), dann wechsel ich einfach in das andere File, und lies da weiter aus?
Das kommt darauf an was du unter Verarbeiten/Auslesen meinst.
Du kannst aus dem XSLT auch direkt auf Elementeeet.c in einer anderen XML-Datei zugreifen:
---- in deinem xml -----
<chef dokument="chef.xml" />
...
---------
chef.xml
<chef>
<name>Großer Häuptling></name>
<tel>123 456</tel>
</chef>
<xsl:template match="chef">
<p>
<b><xsl:value-of select="document(@dokument)/chef/name" /></b>
Tel: <xsl:value-of select="document(@dokument)/chef/tel" />
</p>
</xsl:template>
---------
Grüße
Thomas
Hallo,
Kann man da bei der angabe von allen Knoten, die nicht verändert werden sollen, das ganze nicht einfach umkehren und die knoten angeben, die verändert werden sollen?
Natürlich kannst du das: wenn für alle die veröndert werden sollen, dieselbe Regel gelten:
Unveränderte
<xsl:template match="foo | bar | bla | bo">
xsl:copy
....
<xsl:apply-templates />
</xsl:template>
Veränderte:
------- dein XML-Beispiel --------
<chef dokument="chef.xml" />
<boss dokument="boss.xml" />
...
------------------------------
<xsl:template match="chef | boss | heuptling">
<xsl:copy-of select="document(@dokument)" />
</xsl:template>
Grüße
Thomas