xs:any

(Auszug aus "XML Schema" von Eric van der Vlist)

Wildcard zur Ersetzung durch beliebige Elemente.

<xs:any
    id = xs:ID
    maxOccurs = ( xs:nonNegativeInteger | "unbounded" ) : "1"
    minOccurs = xs:nonNegativeInteger : "1"
    namespace = ( ( "##any" | "##other" ) | list of ( xs:anyURI | ( "##targetNamespace" | "##local" ) ) ) : "##any"
    processContents = ( "skip" | "lax" | "strict" ) : "strict"
    {beliebige Attribute mit einem Nicht-Schema-Namensraum}
    >
    Content: (xs:annotation?)
</xs:any>

Kann auftreten innerhalb von: xs:choice (außerhalb einer Gruppe), xs:choice (innerhalb einer Gruppe), xs:sequence (innerhalb einer Gruppe), xs:sequence (außerhalb einer Gruppe)

Beschreibung

xs:any ist ein Wildcard, das es erlaubt, ein beliebiges Element, das zu einem von mehreren Namensräumen gehört, einzufügen. Diese Partikel kann innerhalb von Auswahlen (xs:choice) und Sequenzen (xs:sequence) genau wie xs:element benutzt werden, und die Auftretenshäufigkeit der zugelassenen Elemente kann durch die Attribute minOccurs und maxOccurs dieser Partikel gesteuert werden.

Die Liste der zugelassenen Namensräume wird mit Hilfe des Attributs namespace angegeben. Dieses Attribut erwartet eine Aufzählung von Namensraum-URIs. In dieser Liste haben zwei Werte eine besondere Bedeutung: ##targetNamespace steht für den Ziel-Namensraum, und ##local steht für lokale Elemente (ohne Namensraum). Diese Werte können gemeinsam mit normalen Namensraum-URIs in der Liste auftreten. Die Liste als Ganzes kann auch durch die beiden anderen Spezialwerte ersetzt werden: ##any steht für beliebige Namensräume generell und ist der Standardwert für das Attribut namespace, während ##other für beliebige Namensräume außer dem Ziel-Namensraum steht. Wenn ##other in einem Schema ohne Ziel-Namensraum verwendet wird, sind alle Namensräume zugelassen, und nur Elemente ohne Namensraum sind verboten.

Der Ziel-Namensraum, der zur Ermittlung der Spezialwerte ##targetNamespace und ##other verwendet wird, ist der Ziel-Namensraum (oder der Mangel an selbigem) des Schemas, in dem das Wildcard xs:any auftritt. Dies ändert sich nicht, wenn ein Schema in ein anderes importiert wird.

Das Verhalten des Validierers bezüglich der zugelassenen Elemente und ihrer Kinder kann mit dem Attribut processContents angegeben werden. Wenn processContents auf strict gesetzt ist (d.h. auf den Standardwert), müssen Schema-Prozessoren diese Elemente gegen ihre jeweiligen Schemas validieren und einen Fehler melden, wenn sie nicht gültig sind oder wenn die Schemas für ihre Namensräume nicht geholt werden konnten. Wenn der Wert skip ist, versuchen die Prozessoren nicht, diese Elemente zu validieren. Wenn der Wert lax ist, validiert der Validierer die Elemente, wenn er eine Definition für sie finden kann, anderenfalls überspringt er sie.

Wenn processContents skip ist (oder, gleichbedeutend, wenn der Wert lax ist und der Schema-Prozessor für ein Element kein Schema finden konnte), überspringt der Prozessor jede weitere Validierung der akzeptierten Elemente, die beliebige Inhaltstypen haben können. Der Prozessor übernimmt schließlich Attribute und Subelemente beliebiger Namensräume, unabhängig vom Wert des Attributs namespace.

Wenn processContents strict ist (oder, was auf dasselbe hinausläuft, wenn der Wert lax ist und der Schema-Validierer für ein Element ein Schema gefunden hat), müssen die für das Wildcard akzeptierten Elemente entweder als globale Elemente in dem Schema für den jeweiligen Namensraum definiert sein, oder es muß für sie im Instanzdokument mit Hilfe des Attributs xsi:type ein gültiger Datentyp angegeben sein.

Einschränkungen

Es fehlen einige Kombinationen für die Spezifikation von Namensräumen, die zur Definition offener Vokabulare mit mehreren Namensräumen nützlich sind. Dazu gehören die Fälle »jeder Namensraum, der im aktuellen Validierungskontext bekannt ist« und das Gegenstück »jeder Namensraum, der im aktuellen Validierungskontext nicht bekannt ist«.

Die üblichen Einschränkungen für nicht-deterministische Inhaltsmodelle gelten auch für Wildcards. Wenn Sie Nutzen und Risiken eines nicht-deterministischen Inhaltsmodells abwägen, achten Sie auf den Wert des Attributs processContents. Möglicherweise treten Konflikte bei irgendeinem Element auf, das in einem der zugelassenen Namensräume als global deklariert ist, falls processContents strict ist, möglicherweise treten sie bei beliebigen Elementen (globalen oder lokalen) auf, wenn processContents skip ist.

Das Verhalten des Spezialwerts ##other für unqualifizierte Elemente in Schemas mit Ziel-Namensraum ist in der W3C XML Schema Recommendation widersprüchlich und sollte in einem zukünftigen Anhang klargestellt werden. Obwohl eine Passage dieser Empfehlung das Gegenteil besagt, lautet die wahrscheinlichste Interpretation, daß unqualifizierte Elemente nicht zugelassen sind, wenn ##other in diesen Schemas angegeben wird.

Attribute

id
Element-ID laut W3C XML Schema.

maxOccurs
Maximale Anzahl von Elementen, die für dieses Wildcard zugelassen ist.

minOccurs
Minimale Anzahl von Elementen, die für dieses Wildcard zugelassen ist.

namespace
Zugelassene Namensräume.

processContents
Art der Validierung, die für die durch dieses Wildcard zugelassenen Elemente durchgeführt werden soll.

   

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML Schema bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2003 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML Schema" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de