xs:element (globale Definition)

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

Globale Elementdefinition, die innerhalb desselben Schemas durch andere Schemas referenziert werden kann.

<xs:element
    abstract = xs:boolean : "false"
    block = ( "#all" | list of ( "extension" | "restriction" | "substitution" ) )
    default = xs:string
    final = ( "#all" | list of ( "extension" | "restriction" ) )
    fixed = xs:string
    id = xs:ID
    name = xs:NCName
    nillable = xs:boolean : "false"
    substitutionGroup = xs:QName
    type = xs:QName
    {beliebige Attribute mit einem Nicht-Schema-Namensraum}
    >
    Content: (xs:annotation?, (xs:simpleType | xs:complexType)?, (xs:unique | xs:key | xs:keyref)*)
</xs:element>

Kann auftreten innerhalb von: xs:schema

Beschreibung

Alle Elemente, die auf der obersten Ebene eines Schemas (d.h. mit einem xs:element, das unmittelbar unterhalb des xs:schema-Dokumentenelements steht) definiert sind, werden als global definiert angesehen.

Global definierte Elemente haben einen globalen Gültigkeitsbereich: Auf sie kann mit ihrem qualifizierten Namen überall in dem Schema verwiesen werden und außerdem auch in jedem Schema, das dieses Schema importiert oder einbindet. Sie können auch als Dokumentenelemente in Instanzdokumenten verwendet werden.

Elemente werden über ihren qualifizierten Namen identifiziert, in dem Attribut name wird jedoch der lokale Namen erwartet.

Die Typdefinition geschieht, indem man dem Element einen einfachen oder komplexen Datentyp zuweist. Diese Zuweisung kann entweder durch Verweis über das Attribut type geschehen, um auf einen einfachen oder komplexen Datentyp zu verweisen, der über seinen qualifizierten Namen angegeben wird, oder »inline«, indem die Definition des einfachen Typs (Element xs:simpleType) oder des komplexen Typs (Element xs:complexType) in das Element xs:element eingebettet wird.

Ein Standardwert kann mit Hilfe des Attributs default definiert werden. Die Semantik der Standardwerte für Elemente unterscheidet sich jedoch von der der Standardwerte für Attribute. Ein Element wird nicht erzeugt, wenn es im Instanzdokument fehlt; der Standardwert wird nur angewendet, wenn das Element vorhanden und leer ist.

Mehrere Attribute zur Steuerung können bei Elementdefinitionen angegeben werden (siehe die Attribute abstract, blocked, final, fixed und nillable).

Elementdefinitionen sind auch der Ort, an dem Ersetzungsgruppen mit Hilfe des Attributs substitutionGroup definiert werden, das auf den Kopf der Ersetzungsgruppe verweist. Jedes globale Element, das nicht final ist, kann als Kopf einer Ersetzungsgruppe gewählt werden. Jeder Verweis auf den Kopf einer Ersetzungsgruppe kann in den Instanzdokumente durch eines der Mitglieder der Ersetzungsgruppe ersetzt werden (vorausgesetzt, daß diese Ersetzungen nicht durch das Attribut block blockiert worden sind). Die Relation ist transitiv; wenn der Kopf einer Ersetzungsgruppe »A« Mitglied einer anderen Ersetzungsgruppe »B« ist, werden die Mitglieder von »A« auch als Mitglieder von »B« betrachtet.

Einschränkungen

Es gibt keine Möglichkeit, globale Elemente zu definieren, die nicht als Dokumentenelemente verwendet werden können. Wenn dies benötigt wird, besteht die Umgehungsstrategie darin, alle Elemente außer einem lokal zu definieren. Man kann einfache und komplexe Typen oder Elementgruppen anstelle globaler Elemente verwenden, um wiederverwendbare Inhaltsmodelle zu definieren, und diese Typen von dem einzigen global definierten Element aus referenzieren.

Die Identifikation globaler Elemente durch ihren qualifizierten Namen macht es unmöglich, mehrere Elemente des gleichen qualifizierten Namens global zu definieren. Wenn ein Schema mehrere Definitionen von Elementen einbinden muß, die denselben qualifizierten Namen (und unterschiedliche Datentypen) haben, müssen alle Definitionen (außer einer) lokal deklariert werden. In diesem Fall ist es möglich, einfache und komplexe Typen oder Elementgruppen anstelle globaler Elemente zu verwenden, um wiederverwendbare Inhaltsmodelle zu definieren.

Alle global definierten Elemente müssen qualifiziert werden, wenn für das Schema ein Ziel-Namensraum definiert ist – sie müssen alle zum Ziel-Namensraum gehören. Ist hingegen kein Ziel-Namensraum definiert, müssen alle Elemente, die global oder lokal definiert sind, unqualifiziert sein.

Standard- und fixierte Werte werden in Attributen definiert und können daher nur für Elemente einfachen Typs verwendet werden.

Elemente können nicht unmittelbar redefiniert werden. Um ein Element zu redefinieren, kann man es entweder in eine Gruppe aufnehmen und diese redefinieren oder aber einen globalen komplexen Typ verwenden, um das Element zu definieren, und dann den komplexen Typ redefinieren.

Beispiel

<xs:element name="name" type="xs:string"/>

Attribute

abstract
Steuert, ob das Element unmittelbar in Instanzdokumenten verwendet werden darf. Wenn der Wert true ist, darf das Element immer noch zur Definition von Inhaltsmodellen verwendet werden, muß aber im Instanzdokument durch eine Ersetzungsgruppe ersetzt werden.

block
Steuert, ob ein Element Gegenstand einer Typ- oder einer Ersetzungsgruppen-Ersetzung sein kann. #all blockiert jede Form von Ersetzung, substitution blockiert jede Ersetzung durch Ersetzungsgruppen, und extension und restriction blockieren jede Ersetzung (sowohl durch xsi:type als auch durch Ersetzungsgruppen) durch Elemente oder Typen, die durch Erweiterung bzw. Einschränkung von dem Typ des Elements abgeleitet sind. Der Standardwert dieses Attributs wird durch das blockDefault-Attribut des übergeordneten xs:schema-Elements festgelegt.

default
Standardwert des Elements. Da sie in einem Attribut festgelegt werden, müssen Standardwerte einfache Inhalte sein. Standardwerte gelten nur für Elemente, die in dem Dokument auftreten und leer sind. Die Attribute fixed und default schließen sich gegenseitig aus.

final
Steuert, ob das Element als Kopf einer Ersetzungsgruppe für Elemente, deren Typ durch Erweiterung oder Einschränkung vom Typ des Elements abgeleitet ist, verwendet werden kann. Der Standardwert dieses Attributs wird durch das finalDefault-Attribut des übergeordneten xs:schema-Elements festgelegt.

fixed
Ein Element einfachen Inhalts kann mit Hilfe dieses Attributs auf einen bestimmten Wert fixiert werden. Dieser Wert wird auch als Standardwert verwendet; wenn das Element leer ist, wird er der Anwendung zur Verfügung gestellt. Die Attribute fixed und default schließen sich gegenseitig aus.

id
Element-ID laut W3C XML Schema.

name
Lokaler Name des Elements (ohne Namensraum-Präfix).

nillable
Wenn dieses Attribut auf true gesetzt ist, kann das Element mit Hilfe des Attributs xsi:nil in den Instanzdokumenten als nil deklariert werden.

substitutionGroup
Qualifizierter Name des Kopfes der Ersetzungsgruppe, zu der dieses Element gehört.

type
Qualifizierter Name eines einfachen oder komplexen Typs (muß weggelassen werden, wenn die Definition eines einfachen oder komplexen Typs eingebettet ist).

   

<< 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