Element 'complexType' w XML Schema

Definicja i użycie

Element 'complexType' definiuje typy złożone. Elementy typu złożone to elementy XML zawierające inne elementy i/lub atrybuty.

元素信息

ilość wystąpień w strukturze jest bez ograniczeń; w elemencie jest jednorazowe.
rodzice elementu element、redefine、schema
zawartość annotation、simpleContent、complexContent、group、all、choice、sequence、attribute、attributeGroup、anyAttribute

gramatyka

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|lista (rozszerzenie|ograniczenie))
final=(#all|lista (rozszerzenie|ograniczenie))
Każde atrybuty

> 
(annotation?,(simpleContent|complexContent|((group|all|
</complexType>

(? znak deklaracji znajduje się w elemencie complexType, element może występować zero lub jeden raz, * znak deklaracji elementu może występować zero lub wiele razy).

atrybuty

id

opcjonalne. Określa unikalny ID tego elementu.

name

opcjonalne. Określa nazwę elementu.

abstract

opcjonalne. Określa, czy można używać tego typu złożonego w dokumencie instancji. Jeśli wartość wynosi true, to element nie może bezpośrednio używać tego typu złożonego, ale musi używać typu złożonego pochodnego od tego typu. Domyślną wartością jest false.

mixed

opcjonalne. Określa, czy dane znakowe mogą występować między podelementami tego typu złożonego. Domyślną wartością jest false.

  • jeśli element simpleContent jest podelementem, to atrybut mixed nie jest dozwolony.
  • jeśli element complexContent jest podelementem, to atrybut mixed może być nadpisywany przez atrybut mixed elementu complexContent.

blok

opcjonalne. Zapobiega użyciu złożonego typu o określonym typie pochodnym w miejsce tego złożonego typu. Wartość może zawierać #all lub listę, która jest podzbiorem rozszerzenia lub ograniczenia:

  • rozszerzenie - zapobiega użyciu złożonego typu pochodnego w miejsce tego złożonego typu.
  • ograniczenie - zapobiega użyciu złożonego typu pochodnego w miejsce tego złożonego typu.
  • #all - Zapobiega użyciu wszystkich typów pochodnych (rozszerzeń i ograniczeń) do zastąpienia tego typu.

final

Opcjonalnie. Zapobiega odmianom określonych typów z tego elementu complexType. Wartość może zawierać #all lub listę, która jest podzbiorem rozszerzeń lub ograniczeń.

  • extension - Zapobiega odmianom poprzez rozszerzenie.
  • restriction - Zapobiega odmianom poprzez ograniczenie.
  • #all - Zapobiega wszystkim odmianom (rozszerzeniom i ograniczeniom).

Każde atrybuty

Opcjonalnie. Określa każdą inną właściwość z non-schematyczną przestrzenią nazw.

Przykład

Przykład 1

W poniższym przykładzie znajduje się złożony element typu "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>

Przykład 2

W poniższym przykładzie znajduje się złożony typ "fullpersoninfo", który rozszerza typ dziedziczony, używając trzech dodatkowych elementów (address, city i country), a który pochodzi z innego złożonego typu "personinfo":

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

W powyższym przykładzie, element "employee" powyżej musi zawierać w kolejności następujące elementy: "firstname", "lastname", "address", "city" oraz "country".