Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature currently requires accessing the site using the built-in Safari browser.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Diskutiere XML mit standardnamensraum in xslt im Webentwicklung, Hosting & Programmierung Forum im Bereich Netzwerk & Internet; Hallöchen!
Ich habe ein etwas komisches Problem.
Ich bekomme aus einer BlackBox eine XML Datei mit vereinfacht gesagt folgendem Aufbau:
<?xml...
#1
M
magics
Mitglied
Themenersteller
Dabei seit
31.08.2005
Beiträge
5
Reaktionspunkte
0
Hallöchen!
Ich habe ein etwas komisches Problem.
Ich bekomme aus einer BlackBox eine XML Datei mit vereinfacht gesagt folgendem Aufbau:
Das erstellen dieser Datei kann ich nicht beeinflussen, ich kann also kein Namespacemapping einbinden.
Nun möchte ich diese XML Datei mittels xslt bearbeiten. Meine Versuche auf die Elemente in der XML zu zu greifen scheitern jedoch kläglich, was sich ändert sobald ich den Namensraum per mapping nutze (<ns0:root xmlns:ns0=http://NAMESPACE> ...</ns0:root>)
Gibt es eine Möglichkeit auf die Elemente Zugriff zu bekommen?
Mein Bisheriger Ansatz wäre folgender:
Die Zuweisung der passenden XSLT Datei im Kopf der XML Datei kannst du dir sparen wenn dies dynamisch über ein Script oder so geschieht.
Z.B. wenn ein php Script die Übergabe von XML und XLST an den XML Parser übernimmt. Was du vermutlich machen musst, da du sagtest das die Erstellung der XML Datei von dir nicht beeinflusst werden kann. Somit musst du wohl auf ein Script zurück greifen, das die Dateinamen der XML und XSLT Datei an den entsprechend installierten XML Parser des Webservers übergibt. Was anderes würde mir jedenfalls sonst nicht einfallen ohne das die XML Datei nachträglich bearbeitet werden muss.
sollte nur ein Beispielnamensraum sein, da ich das ganze etwas abstrakt halten möchte.
Um etwas genauer zu werden: Das ganze hat für mich nicht wirklich etwas mit Webentwicklung zu tun, es passt auf Grund des XML/XSLT jedoch nur hier.
Ich habe ein Programm, welches XML-Dateien mittels XSLT bearbeiten kann, ich gebe in diesem Programm die XML und die zugehörige XSLT Datei an und erhalte das Ergebnis in einer neuen Datei. Da dieses Programm bei uns in der Firma laufen soll möchte ich sowenig Schritte wie möglich haben (Wartbarkeit, ...) also kommt eine vorangestellte externe Konvertierung der XML nur als letzter Ausweg in Frage.
Natürlcih habe mich im vorfeld bei selfhtml, w3school und anderen Webseiten schlau gemacht, diese verwenden allerdings immer Präfixe für den Namensraum. Ich muss jedoch die unten gechriebene XML-Datei auswerten, wleche nur einen Standartnamensraum benutzt.
Ich hoffe, es ist irgendwie möglich dem XSLT-Prozessor verständlich zu machen, dass er die Iteration über diese Elemente beginnen soll.
Ich hoffe das war jetzt etwas verständlich.
#4
G
Gandalf_the_Grey
Bekanntes Mitglied
Dabei seit
19.11.2003
Beiträge
2.768
Reaktionspunkte
0
Ort
Großraum Frankfurt/Main
Also, wozu brauchst du in deinem Fall Namensräume? Du arbeitest nicht mit einer XLST und zig verschiedenen XML Dateien wo sich die Tag Namen überschneiden, oder?
Ansonsten verstehe ich nicht wo dein Problem ist. Gib doch einfach in der XML Datei den Pfad der dazugehörigen XLST Datei an und gut ist. Diese Angabe fehlt bei dir VÖLLIG.
Diesen Teil kannst du weglassen, wenn du dem XML Prozessor den Pfad der XML und der XLST Datei direkt übergibst.
Das kannst du entweder per Script, per Batch oder weiß der Geier wie machen (meinetwegen auch händisch).
Was läuft denn deiner Meinung nach falsch. Welches Ergbnis liefert dir der Prozessor aktuell und welches SOLLTE er deiner Meinung nach liefern.
Sorry, aber entweder steh ich völlig auf dem Schlauch oder ich weiß auch nicht.
#5
M
magics
Mitglied
Themenersteller
Dabei seit
31.08.2005
Beiträge
5
Reaktionspunkte
0
Um es noch ein 3. ma zu sagen:
Ich erstelle die XML-Datei nicht! Und wenn ich es könnte würde ich die Namensräume liebend gern rauslassen. Aber wenn ich 50 Tochterfirmen sagen soll, Sie sollen jeder 3 Programme umschreiben (nur weil ich es nicht gebacken kriege ihre XML zu bearbeiten) kann ich mir morgen einen neuen Job suchen.
Ich übergebe dem XSLT-Prozessor schon beide Dateien (brauch und kann es in der xml also nicht machen)
Die ausgabe ist eine leere Datei, da der XSLT Prozessor die Elemente der XML (auf Grund des Standardnamensraumes) nicht findet. Herauskommen sollte eine neue Datei (in dem unten gezeigten Beispiel keien XML, in wirklcihkeit schreib cih das dann so um, dass es eine XML ist) welche die gemappten Werte der ausgangsdatei enthält.
Meine Frage ist doch nur, wie ich in einem XSLT auf Elemente einer XML Datei zugreife, welche einem Standardnamensraum unterliegen.
#6
G
Gandalf_the_Grey
Bekanntes Mitglied
Dabei seit
19.11.2003
Beiträge
2.768
Reaktionspunkte
0
Ort
Großraum Frankfurt/Main
Also, um es auch nochmal zu sagen. Dein Problem hat NICHTS, aber auch absolut NICHTS mit Namenräumen zu tun.
Wenn du die mit deiner XML Datei verwendest kommt ganz urplötzlich ein Ergebnis heraus!
Es liegt also nicht an den Namensräumen oder der XML Datei, sondern ausschließlich an deiner XLST Datei. IMHO solltest du dich mit XLST und XPATH noch ein wenig Intensiver beschäftigen.
#7
M
magics
Mitglied
Themenersteller
Dabei seit
31.08.2005
Beiträge
5
Reaktionspunkte
0
Also ich bekomme eine Ausgabe, allerdings nicht die von mir erwartete:
Ich würde mal behaupten das liegt daran das ich an der XSLT nix groß verändert habe. Ich habe nur mit der Umstrukturierung zeigen wollen das du eine Ausgabe (egal welche) hin bekommen kannst. Wollte dir einfach zeigen das es nicht an der XML lag und nicht an den Namensräumen (weiß immer noch nicht wie du da drauf kommst) sondern das es ausschließlich an der von dir Formulierten XSLT lag.
magics schrieb:
Werde das Beispiel nachher mal zu Hause mit einem anderen XSLT-Prozessor ausprobieren.
Ähm wieso suchst du denn schon wieder an einer anderen Ecke? Was hat das denn mit dem XSLT Prozessor zu tun? Das da ggf. nicht die Ausgabe raus kommt die DU dir erhofft hast ist vollkommen richtig.
Ich habe ausschließlich deine XSLT so angepasst das eine Ausgabe zu sehen ist. Nicht mehr und nicht weniger. Im übrigen habe ich das ausschließlich mit dem Internet Explorer getestet. (Der kann XML und XLST miteinander verknüppeln!)
#9
M
magics
Mitglied
Themenersteller
Dabei seit
31.08.2005
Beiträge
5
Reaktionspunkte
0
Also das von dir angepasste XSLT funktioniert auch nicht, wenn ich das XSLT richtiug verstehe (und ich glaube mal, das ich das richtig verstehe) sollte etwa folgende XML-Datei erzeugt werden:
Wie ich jedoch in meinem letzten Posting geschrieben habe kommt eine absolut unbearbeitete Ausgabe heraus. Dies geht sogar soweit, dass selbst felder, auf welche ich in der XSLT nicht zugreife übernommen werden. Vom aussehen scheint es als würde er die Tags wegschneiden und den Text einfach stehen lassen (und das ist sicher nicht das zu erziehlende resultat)
Warum ich so sehr auf den namensraum eingehe?
Ganz einfach! Wenn ich den namensraum weglasse, bzw. diesen über einen Prefix angebe, funktioniert alles wunderbar.
BSP:
Ist der Unterschied erkennbar?
Ich kann auhc mal so fragen, wie kann ich mit xslt aus der in meinem ersten Posting geposteten XML eine XML mit folgendem aufbau machen: