xs:redefine

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

Einbindung eines W3C XML Schema für denselben Namensraum, möglicherweise mit Definitionsänderung.

<xs:redefine
    id = xs:ID
    schemaLocation = xs:anyURI
    {beliebige Attribute mit einem Nicht-Schema-Namensraum}
    >
    Content: (xs:annotation | (xs:simpleType | xs:complexType | xs:group | xs:attributeGroup))*
</xs:redefine>

Kann auftreten innerhalb von: xs:schema

Beschreibung

xs:redefine verhält sich ähnlich wie xs:include, jedoch mit einer Ausnahme: Die Definition von einfachen und komplexen Typen sowie von Element- und Attributgruppen kann geändert werden. Änderungen, die an diesen Komponenten durchgeführt werden, müssen zu Komponenten führen, die gültige Einschränkungen oder Erweiterungen der ursprünglichen sind.

Einfache und komplexe Typen werden mit Hilfe der üblichen Ableitungsmechanismen redefiniert: Die neuen Typen müssen als Ableitungen durch Einschränkung oder Erweiterung ihrer vorherigen Definition, die als Basistyp betrachtet werden, definiert werden.

Element- und Attributgruppen werden durch Angabe einer neuen Definition redefiniert und können sich auf sich selbst beziehen, um anzuzeigen, daß der Inhalt ihrer ursprünglichen Definition eingebunden werden muß. In diesem Fall wird eine solche Selbstreferenz nicht als rekursive Definition (die bei Element- und Attributgruppen verboten ist), sondern als Erweiterung der ursprünglichen Gruppe betrachtet.

Wenn xs:redefine verwendet wird und keine Redefinitionen angegeben sind, ist das Ergebnis dem von xs:include ähnlich.

Einschränkungen

xs:redefine kann nur verwendet werden, um Schemas einzubinden, die entweder denselben oder aber gar keinen Ziel-Namensraum haben. Es gibt keine entsprechende Möglichkeit, Schema-Definitionen in einem einzigen Vorgang zu importieren und zu redefinieren. Das Schema muß in zwei verschiedenen Schritten redefiniert und importiert werden.

Beliebige Redefinitionen sind nicht erlaubt. Nach der Redefinition müssen die Komponenten gültige Ableitungen (durch Erweiterung oder Einschränkung) ihrer vorherigen Definitionen sein.

xs:element, xs:attribute und xs:notation können nicht redefiniert werden.

Beispiel

<xs:redefine schemaLocation="complex-types2.xsd">
    <xs:complexType name="book">
        <xs:complexContent>
            <xs:restriction base="book">
                <xs:sequence>
                    <xs:element ref="isbn"/>
                    <xs:element ref="title"/>
                    <xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
                    <xs:element ref="character" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
                <xs:attribute name="id" type="bookID"/>
                <xs:attribute ref="available"/>
            </xs:restriction>
        </xs:complexContent>
    </xs:complexType>
</xs:redefine>

Attribute

id
Element-ID laut W3C XML Schema.

schemaLocation
Ort des Schemas, das redefiniert 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