Sascha: Mehrere Namespaces

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?

  1. @@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

    --
    „Das Internet ist ein großer Misthaufen, in dem man allerdings auch kleine Schätze und Perlen finden kann.“ (Joseph Weizenbaum)