XML-Know How

Namespace-Unterstützung in XSD

In XSD kann mittels Attributen des <xs:schema>-Elements angegeben werden, welchen Namespace die XML-Struktur, die mit der XSD beschrieben wird, standardmäßig im XML-Dokument erhalten soll. Die XSD für den Standard, der in unserem Bookshop-Beispiel verwendet wird, könnte so beginnen:

<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:std="http://www.beispiel2.org/standard"
targetNamespace="http://www.beispiel2.org/standard"
elementFormDefault="qualified"
attributeFormDefault="unqualified">

<xs:schema> hat hier zwei xmlns-Attribute, eines für den eigenen Namespace »xs« und eines für den Namespace des XML-Dokuments, das durch das Schema definiert werden soll (»std«). xmlns:std="http://www.beispiel2.org/standard" gibt zunächst ganz allgemein an, dass für die XML-Elemente, die dem Namespace www.beispiel2.org/standard zugeordnet sind, das Kürzel »std« als Namespace-Prefix dienen soll.

Mit targetNamespace="http://www.beispiel2.org/standard" wird dann definiert, dass der Namespace www.beispiel2.org/standard für das von der XSD beschriebene XML dienen soll, also für alle XML-Elemente, die in der betreffenden XSD deklariert wurden.

Die Attribute elementFormDefault und attributeFormDefault geben mit den Werten »qualified« oder »unqualified« an, ob die Elemente bzw. Attribute im XML-Dokument standardmäßig mit dem Namespace versehen werden müssen oder nicht. Dasselbe lässt sich auch über das Attribut form in <xs:element> und <xs:attribute> für jede Element- oder Attribut-Deklaration separat und abweichend von den Default-Angaben in <xs:schema> angeben.

In welcher Form der Namespace im XML-Dokument zugeordnet wird, sei es direkt (mit dem xmlns-Attribut und Namespace-Prefixen) oder sei es indirekt (mit dem xmlns-Attribut und ohne Namespace-Prefixe), ist dem Autor des Dokuments freigestellt, solange die Zuordnung eindeutig erfolgt.