Hey Leute!
Ich habe eine XML, in die ich einen zusätzlichen Knoten einfügen will.
Exemplarisch sieht die XML so aus:
Musterstraße 15Deutschland01254646846Musterstraße 15Deutschland
Hey Leute!
Ich habe eine XML, in die ich einen zusätzlichen Knoten einfügen will.
Exemplarisch sieht die XML so aus:
Musterstraße 15Deutschland01254646846Musterstraße 15Deutschland
Wie funktioniert denn die Transformation? Die aktuelle XSL würde ich gern mal sehen.
In der XSL muss doch nur dieser zusätzliche Knoten drin stehen und fertig.
Wie kommt die Telefonnummer ins Spiel?
SORRY, kann leider nicht weiterhelfen
Wo kommt denn der weitere Knoten her?
Wenn der weitere Knoten in einer anderen XML-Datei steht könnte man diese XML-Datei im XSLT mit document() einladen und mitverarbeiten. Den Knoten dann an die richtige Stelle zu schreiben ist aber gar nicht so leicht.
XSLT für diese Operation zu nehmen ist sehr ungewöhnlich. Viel einfacher ginge es mit einer Programmiersprache wie Python, Java oder Javascript. Da kann man sehr komfortabel im XML navigieren und manipulieren.
Danke zunächst mal für die schnellen Antworten.
Also ich habe Daten im XML-Format vorliegenm welche Adressblöch enthalten. Die Daten darin sollen geändert werden. Dazu habe ich bereits ein Stylesheet verfasst.
Ich habe hier nur ein vereinfachtes Beispiel meines Anliegens reingepackt, weil es insgesamt sehr umfangreich ist.
Das ersetzen eines Textknotens ist kein Problem, jedoch soll praktisch ein komplett neuer Geschwistertag von „Adresse“ und „Land“ entstehen.
Die Telefonnummer selbst würde ich einfach ins Stylesheet eintragen, damit diese in der Ausgabedatei ausgegeben wird.
Hi, mexxwel
Du brauchst ein Stylesheet, mit dem du die XML-Datei kopieren kannst.
Hast du dies, kannst du dir zunächst eine Variable aufbauen (xslt-Element document), die den zusetzlichen Knoten enthält zusammen mit einer Indikation, in welchen Kontakt diese rein soll.
Beim Kopieren prüfst du dann, ob die Indikation in der Variablen enthalten ist. In diesem Fall erzeugst du in dem Kontakt den zusätzlichen Knoten, bevor du rekursiv die weiteren enthaltenen Knoten kopierst.
Das mit dem Stylehsheet weiß ich ja das habe ich auch schon geschrieben. Da ich schon einige andere Funktionen darin aufgebaut habe (Ersetzen,Kommentare,When/otherwise etc.).
Würde einfach nur gerne wissen, wie der genaue Befehl auszusehen hat, wenn ich in das obenstehende xml noch einen Knoten (Fon) mit zugehörigem Textknoten (Telefonnummer) einfügen möchte. Das ganze drumherum mit Namespaces etc habe ich ja.
Grüße
Hallo,
Ich habe eine XML, in die ich einen zusätzlichen Knoten
einfügen will.Exemplarisch sieht die XML so aus:
…
Wo kommt denn die Telefonnummer her?
Mit XSLT wird ein XML in ein anderes Dokument transformiert, was wieder XML sein kann. Man könnte natürlich die Telefonnummer in eine XSL Regel packen, so dass die resultierende XML Datei deiner Vorgabe entspricht, aber das ist ja vermutlich wenig sinnvoll. Was genau möchstest du realisieren?
Gruß
Heavy
Die Telefonnummer würde ich manuell eintragen. Sie wurde mir nur mitgeteilt und muss nun in das XML File.
Aber es ist doch möglich mit XSLT oder?
Die Telefonnummer würde ich manuell eintragen. Sie wurde mir
nur mitgeteilt und muss nun in das XML File.
Blöde Frage: weshalb dann nicht manuell in die XML Datei eintragen?
Aber es ist doch möglich mit XSLT oder?
Ja, gehen tut das schon.
<?xml version="1.0" encoding="UTF-8"?>0123456789
Siehe auch http://xmlplease.com/xsltidentity#s11.
Gruß
Heavy
Hi, mexxwel
anhand deiner Antwort kann ich sehen, dass die Aufgabe vielleicht ein wenig schwer für dich ist. Andernfalls könntest du es mit den Tipps aus den Manuals von XSLT herausfinden.
Schau mal hier:
Vielleicht habe ich dich auch falsch verstanden. Aber wer-weiss-was ist kein Ersatz für Aufpassen bei den Vorlesungen.
Gruß
Rolf
Kann das schlecht in 200 Dateien eintragen ^^
Werde das morgen mal versuchen mit den Stylesheet-Befehlen und mich dann nochmal melden.
Danke schonmal
Hey Leute!
Ich habe eine XML, in die ich einen zusätzlichen Knoten
einfügen will.
hallo mexxwel,
ich persönlich würde statt xslt lieber eine „echte“ programmiersprache bemühen:
http://php.net/manual/en/domnode.insertbefore.php
…oder wenns was kleines ist: sed oder awk
nachdem man aber mittels xslt aus xml xml machen kann,
hab ich mal den google deine frage gefragt:
http://www.google.com/search?q=xml+insert+element+xsl
der erste treffer war:
http://stackoverflow.com/questions/54683/using-xslt-…
und daraus ist dann folgendes geworden:
~/tmp\> cat [www.mexxwel.xml](http://www.mexxwel.xml)
01254646846Musterstraße 15Deutschland
~/tmp> cat www.mexxwel.xsl
<?xml version="1.0"?>01254646846~/tmp\> xsltproc [www.mexxwel.xsl](http://www.mexxwel.xsl) [www.mexxwel.xml](http://www.mexxwel.xml)
<?xml version="1.0"?>0125464684601254646846Musterstraße 15Deutschland
grüße
people
Hallo mexxwel,
das dürfte dir helfen:
<?xml version="1.0" encoding="utf-16"?>01254646846
Das XSLT-Skript kopiert nun immer alles, was im Quell-XML drinsteht und, wenn das root-Element Kontakt ist und kein Kind-Element Fon hat, fügt er zusätzlich die Telefonnummer als erstes Kind-Element unter Kontakt hinzu.
Gruß Markus
Mit XSLT kann ich Dir leider nicht weiterhelfen!
Falls Du ne andere Möglichkeit z.B. mit VB.net auch gebrauchen kannst könnte ich Dir weiterhelfen!
Gruß
Marko
Normalerweise wird eine XML verwendet und per XSLT in was anderes konvertiert wie etwas HTML oder PDF. In beiden Fällen geht es mehr oder weniger um Visualisieren.
Deine Frage kling als ob Du Deine jetzige XML um Daten erweitern wolltest. Wo nimmst du die her?