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