Druck-Version
Deutsch Nederlands English
Inhaltsverzeichnis
Teile: Teil: XML Teil: PHP Quellenverzeichnis
Pfad: > Teil: XML > XML-Schema
Benachbarte Abschnitte: Grundlagen Definition komplexer Typen, Elementen- und Attributdeklaration Simple Typen Anonyme Typ-Definitionen Element-Inhalte Kommentare (annotations) Aufbau von Inhaltsmodellen Attribut-Gruppen NIL-Werte
1.3.9. NIL-Werte

Eines der im purchase order aufgeführten item-Elemente, der Rasenmäher, besitzt kein shipDate-Element. In unserem Szenario könnte dies vom Schema-Author ein berücksichtigter Zustand sein, der zum Ausdruck bringen soll, das der entsprechende Gegenstand noch nicht versendet wurde. Im Allgemeinen bedeutet das fehlen eines Elements nichts spezifisches. Es könnte bedeuten, das die Information nicht verfügbar oder nicht anwendbar ist. Es kann allerdings auch andere Ursachen haben.

Manchmal ist es erforderlich, oder wünschenswert, explizit zum Ausdruck zu bringen, das die Information nicht verfügbar ist, bspw. wenn Werte aus einer relationalen Datenbank weiterverarbeitet werden, bei denen zwar das Feld vorhanden, der Wert selbst aber nicht gesetzt ist. Solche Fälle können mit dem Schema-NIL-Wert dargestellt werden.

Der NIL-Mechanismus wird über ein Out-Of-The-Band-Signal dargestellt. D.h., es besteht kein NIL-Wert als Inhalt eines Elements, vielmehr wird der Zustand über ein Attribut vermittelt.

Beispiel 43: Erweiterung der shipData-Deklaration um NIL-Werte
<xsd:element name="shipDate" type="xsd:date" nillable="true"/>  

Um im Instanzdokument explizit anzugeben, das der Wert für shipDate NIL ist, wird das Attribut (aus dem XML-Schema-Namespace for instances) auf true gesetzt.

Beispiel 44: Anwendung des NIL-Wert-Attributs
<shipDate xsi:nil="true"></shipDate>  

Das nil-Attribut ist als Teil des XML-Schema Namensraum für Instanzdokumente definiert (http://www.w3.org/2001/XMLSchema-instance) und als solches muss es im Instanzdokument über einen Präfix (wie xsi: per Konvention) mit diesem assoziiert werden. NIL-Werte können nur auf Elementinhalte angewendet werden, nicht auf Attributwerte. Ein Element mit einem nil-Attribut, welches auf "true" steht, darf keinerlei Inhalte haben, seine Attribute können jedoch weiterhin verwendet werden.