<xsd:complexType>-Element
Definiert einen komplexen Typ, der die Gruppe von Attributen und den Inhalt eines Elements bestimmt.
<complexType
abstract = Boolean : false
block = (#all | List of (extension | restriction))
final = (#all | List of (extension | restriction))
id = ID
mixed = Boolean : false
name = NCName
{any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleContent | complexContent | ((group | all |
choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>
Attribute
abstract
Ein Indikator dafür, ob der komplexe Typ in einem Instanzdokument verwendet werden kann. Wenn dieser Wert true ist, kann ein Element diesen komplexen Typ nicht direkt verwenden, sondern muss einen von diesem komplexen Typ abgeleiteten komplexen Typ verwenden. Der Standardwert ist false.Dies ist optional.
block
Der Typ der Ableitung. Das block-Attribut verhindert, dass ein komplexer Typ mit dem angegebenen Ableitungstyp anstelle dieses komplexen Typs verwendet wird. Der Wert kann #all bzw. eine Liste enthalten, die eine Teilmenge von extension oder restriction darstellt. Das block-Attribut wird nur verwendet, wenn ein Instanzdokument während der Validierung den normalen Typ für ein Element mithilfe des schema-instance:type-Attributs überschreibt. Durch das block-Attribut kann verhindert werden, dass Elemente durch Erweiterung und/oder Einschränkung definierte komplexe Typen auswählen, um den für ein Element angegebenen ursprünglichen Typ zu ersetzen.Erweiterung
Verhindert, dass durch Erweiterung abgeleitete Typen anstelle dieses komplexen Typs verwendet werden.
Einschränkung
Verhindert, dass durch Einschränkung abgeleitete Typen anstelle dieses komplexen Typs verwendet werden.
#all
Verhindert, dass alle abgeleiteten komplexen Typen anstelle dieses komplexen Typs verwendet werden.
Dies ist optional.
final
Der Typ der Ableitung. Das final-Attribut verhindert den angegebenen Ableitungstyp dieses complexType-Elements. Der Wert kann #all bzw. eine Liste enthalten, die eine Teilmenge von extension oder restriction darstellt.Erweiterung
Verhindert eine Ableitung durch Erweiterung.
Einschränkung
Verhindert eine Ableitung durch Einschränkung.
#all
Verhindert jegliche Ableitung (durch Erweiterung oder Einschränkung).
Dies ist optional.
id
Die ID dieses Elements. Der id-Wert muss vom Typ "ID" sein und innerhalb des Dokuments, in dem dieses Element enthalten ist, eindeutig sein.Dies ist optional.
Gemischt
Ein Indikator dafür, ob die Zeichendaten zwischen den untergeordneten Elementen dieses komplexen Typs angezeigt werden dürfen. Der Standardwert ist false.Wenn das simpleContent-Element ein untergeordnetes Element darstellt, ist das mixed-Attribut nicht zulässig.
Wenn das complexContent-Element ein untergeordnetes Element darstellt, kann dieses mixed-Attribut mit dem mixed-Attribut des complexContent-Elements überschrieben werden.
Dies ist optional.
Name
Der Name des Typs. Der Name muss gemäß der Definition in der Spezifikation für XML-Namespaces ein NCName (Name ohne Doppelpunkt) sein.Erforderlich, wenn es sich bei dem enthaltenden Element um das schema-Element handelt, andernfalls nicht zulässig.
Wenn der Name angegeben ist, muss er für alle simpleType-Elementen und complexType-Elementen eindeutig sein.
Dies ist optional.
Elementinformationen
Anzahl der Vorkommen |
Unbegrenzt im Schema; einmal im Element. |
Übergeordnete Elemente |
|
Inhalt |
annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute |
Hinweise
Bei einem komplexen Typ handelt es sich im Wesentlichen um eine Typdefinition für Elemente, die Attribute und Elemente enthalten können. Ein Element kann mit einem type-Attribut deklariert werden, das sich auf ein die Struktur, den Inhalt und die Attribute dieses Elements definierendes complexType-Element bezieht. (Elemente können auch auf ein simpleType im type-Attribut verweisen).
Ein komplexer Typ kann nur eines der folgenden Elemente enthalten, das den Typ des im komplexen Typ zulässigen Inhalts bestimmt.
Element |
Beschreibung |
---|---|
simpleContent |
Der komplexe Typ verfügt über Zeichendaten oder simpleType als Inhalt und enthält keine Elemente, jedoch möglicherweise Attribute. |
complexContent |
Der komplexe Typ enthält nur Elemente oder keinen Elementinhalt (leer). |
Gruppe |
Der komplexe Typ enthält die Elemente, die in der Gruppe definiert sind, auf die verwiesen wird. |
Sequenz |
Der komplexe Typ enthält die in der angegebenen Sequenz definierten Elemente. |
Auswahl |
Für den komplexen Typ ist nur eines der im Auswahlelement angegebenen Elemente zulässig. |
all |
Der komplexe Typ lässt eine beliebige Anzahl von Elementen oder alle Elemente zu, die im all-Element angegeben sind und einmal angezeigt werden sollen. |
Wenn group, sequence, choice oder all als untergeordnetes Element angegeben ist, können die Attribute für complexType optional mithilfe der folgenden Elemente deklariert werden.
Element |
Beschreibung |
---|---|
Attribut |
Das angegebene Attribut ist im komplexen Typ enthalten. |
attributeGroup |
Der komplexe Typ enthält die Attribute, die im attributeGroup-Element definiert sind, auf das verwiesen wird. |
anyAttribute |
Der komplexe Typ kann jedes beliebige Attribut aus dem (den) angegebenen Namespace(s) enthalten. |
Es kann eine beliebige Anzahl von attribute-Elementen oder attributeGroup-Elementen verwendet werden. Eine Instanz von anyAttribute kann ebenfalls verwendet werden.
Wenn group, sequence, choice oder all angegeben ist, müssen die Elemente die folgende Reihenfolge aufweisen.
Gruppe | Sequenz | Auswahl | all
Attribut | attributeGroup
anyAttribute
Beispiele
Im folgenden Beispiel wird ein komplexer Typ veranschaulicht, der einen einfachen Typ (decimal) mit einer Attribut- und Elementdeklaration enthält, die wiederum einen komplexen Typ verwendet.
<xs:complexType name='internationalShoeSize'>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name='myShoeSize' type='internationalShoeSize'/>
Im folgenden Beispiel wird eine Instanz des myShoeSize-Elements in einem XML-Dokument dargestellt.
<myShoeSize sizing='UK'>10.5</myShoeSize>
Im folgenden Beispiel wird ein myShoeSize-Element mit complexType dargestellt, das im Element anonym definiert ist. (Beachten Sie, dass das name-Attribut nicht vorhanden ist.)
<xs:element name='myShoeSize'>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>