Element "complexType" im XML Schema
Definition und Verwendung
Der Elementtyp "complexType" definiert einen komplexen Typ. Elemente eines komplexen Typs sind XML-Elemente, die andere Elemente und/oder Attribute enthalten.
Elementinformationen
Auftretenshäufigkeit | Innerhalb des Schemas uneingeschränkt; im Element einmalig. |
Übergeordneter Element | Element、Neudefinierung、Schema |
Inhalt | Anmerkung、einfacheInhalt、komplexerInhalt、Gruppe、alle、Wahl、Reihenfolge、Eigenschaft、Eigenschaftsgruppe、beliebigeEigenschaft |
Grammatik
<complexType id=ID name=NCName abstract=true|false mixed=true|false block=(#all|Liste von (Erweiterung|Beschränkung)) final=(#all|Liste von (Erweiterung|Beschränkung)) jegliche Attribute > (Anmerkung?,(einfacheInhalt|komplexerInhalt|((Gruppe|alle| Wahl|Reihenfolge)?,((Eigenschaft|Eigenschaftsgruppe)*,beliebigeEigenschaft?)))) </complexType>
(? Symbol wird im Element complexType deklariert, das Element kann null oder einmal auftreten, * Symbol deklariert, dass das Element null oder mehrmals auftreten kann.)
Attribute
id
Optional. Legt die eindeutige ID des Elements fest.
name
Optional. Legt den Namen des Elements fest.
abstract
Optional. Legt fest, ob der komplexe Typ im Instanzdokument verwendet werden kann. Wenn dieser Wert true ist, kann das Element den komplexen Typ nicht direkt verwenden, sondern muss einen komplexen Typ verwenden, der vom komplexen Typ abgeleitet wurde. Standardwert ist false.
mixed
Optional. Legt fest, ob Zeichenfolgen im Bereich zwischen den Unterlementen des komplexen Typs auftreten dürfen. Standardwert ist false.
- Wenn das Element simpleContent ein Unterlement ist, ist das Attribut mixed nicht erlaubt.
- Wenn das Element complexContent ein Unterlement ist, kann das Attribut mixed durch das Attribut mixed des Elements complexContent überschrieben werden.
block
Optional. Verhindert, dass komplexe Typen mit angegebenem Ableitungstyp anstelle der komplexen Typen verwendet werden. Dieser Wert kann #all oder eine Liste enthalten, die eine Teilmenge von Extension oder Restriction ist:
- Erweiterung - Verhindert, dass komplexe Typen, die durch Ableitung erzeugt wurden, anstelle der komplexen Typen verwendet werden.
- Beschränkung - Verhindert, dass komplexe Typen, die durch Ableitung erzeugt wurden, anstelle der komplexen Typen verwendet werden.
- #all - Verhindert, dass alle abgeleiteten komplexen Typen als Ersatz für diesen komplexen Typ verwendet werden.
final
Optional. Verhindert die Ableitung der angegebenen Typen von diesem komplexen Typen-Element. Der Wert kann #all oder eine Liste enthalten, die aus Erweiterungen oder Beschränkungen besteht.
- extension - Verhindert die Ableitung durch Erweiterung.
- restriction - Verhindert die Ableitung durch Beschränkung.
- #all - Verhindert alle Ableitungen (Erweiterungen und Beschränkungen).
jegliche Attribute
Optional. Definiert jede andere Eigenschaft mit einer non-schema Namensraum.
Beispiel
Beispiel 1
In dem folgenden Beispiel gibt es einen komplexen Typenelement namens "note":
<xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Beispiel 2
In dem folgenden Beispiel gibt es einen komplexen Typ "fullpersoninfo", der durch die Verwendung von drei zusätzlichen Elementen (address, city und country) den abgeleiteten Typ erweitert, der von einem anderen komplexen Typ "personinfo" abgeleitet ist:
<xs:element name="employee" type="fullpersoninfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
Im obigen Beispiel muss das obere "employee"-Element in folgender Reihenfolge die folgenden Elemente enthalten: "firstname", "lastname", "address", "city" und "country".