Mehrere Namespaces
Sascha
- xsl
Hallo,
ich habe folgendes Problem.
Es gibt ja die Möglichkeit einem XML Dokument mehrere Namespaces zuzuweisen.
<x:datenuebermittlung.datenabgleich.lieferung xmlns:x="http://www.xmeldit.de/xmeldit1.7"
xmlns="http://www.osci.de/xmeld131" xmlns:m="http://www.osci.de/xmeld131"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xmeldit.de/xmeldit1.7
http://www.xmeldit.de/xmeldit1.7/xmeldit-datenabgleich.xsd" version="1.7">
In diesen Beispiel sind nun 2 Namespaces definiert wobei einer doppelt eingetragen ist, was wohl heißt das er der Standard Namesspace ist. Dem entsprechend werden die Tags im Dokument einmal mit <x:name> und mit <name> beschrieben.
<xmeldit:datenuebermittlung.datenabgleich.lieferung
xmlns:xmeldit="http://www.xmeldit.de/xmeldit1.7"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xmeld="http://www.osci.de/xmeld131"
xsi:schemaLocation="http://www.xmeldit.de/xmeldit1.7 http://www.xmeldit.de/xmeldit1.7/xmeldit-datenabgleich.xsd"
version="1.7">
Hier eine weitere valide schreibweise der Schemaangabe...
In diesen Fall werden die Tags mit xmeldit:name und xmeld:name angegeben.
-------------------------------------------------------------
Nun zu meiner Frage:
Wenn ich für diese 2 Dateien... die inhaltlich Gleich aufgebaut sind nun eine XSL schreiben will, habe ich bisher in meinen XPath angaben immer mit der direkten Angabe des Präfixes gearbeitet quasi so ... BSP: //xmeld:name
wenn mir jetzt aber eine Datei geliefert wird wo nicht xmeld als Präfix steht sondern x wie muss ich dann adressieren wenn ich vorher nicht weiß wie die Namespaces beschrieben sind?
@@Sascha:
wenn mir jetzt aber eine Datei geliefert wird wo nicht xmeld als Präfix steht sondern x wie muss ich dann adressieren wenn ich vorher nicht weiß wie die Namespaces beschrieben sind?
Im XSLT weist du dem Namensraum wieder einen Präfix zu; dieser kann wiederum anders heißen als 'x' oder 'xmeld', bspw. 'foo':
<xsl:stylesheet version="1.0"
xmlns:foo="http://www.osci.de/xmeld131"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
Innerhalb des XSLT-Dokuments verwendest du dann (auch bei XPath) das Präfix 'foo'.
Live long and prosper,
Gunnar