element complexType XML Schema

definicja i użycie

element complexType definiuje złożony typ. Elementy złożone to XML elementy zawierające inne elementy i/lub atrybuty.

informacje o elemencie

ilość wystąpień w strukturze jest nieograniczona; w elemencie jest raz.
rodzice elementu element, redefiniować, 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 (extension|restriction))
final=(#all|lista (extension|restriction))
Jakiekolwiek atrybuty
>
(annotation?,(simpleContent|complexContent|((group|all| 
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>

(? Symbol deklaracji w elementie complexType, element może występować zero lub jeden raz, * symbol deklaracji elementu może występować zero lub wiele razy.)

Atrybuty

id

Opcjonalnie. Określa unikalny ID tego elementu.

name

Opcjonalnie. Określa nazwę elementu.

abstract

Opcjonalnie. Określa, czy można używać tego typu złożonego w dokumencie instancji. Jeśli wartość wynosi true, 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

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

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

block

Opcjonalnie. Zapobiega używaniu złożonego typu o określonym typie pochodnym zamiast tego typu złożonego. Wartość może zawierać #all lub listę, która jest podzbiorem extension lub restriction:

  • extension - Zapobiega używaniu typów pochodnych poprzez rozszerzenie zamiast tego typu złożonego.
  • restriction - Zapobiega używaniu typów pochodnych poprzez ograniczenie zamiast tego typu złożonego.
  • #all - Zapobiega używaniu wszystkich typów pochodnych zamiast tego typu złożonego.

final

Opcjonalnie. Zapobiega używaniu określonego typu pochodnego z elementu complexType. Wartość może zawierać #all lub listę, która jest podzbiorem extension lub restriction.

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

Jakiekolwiek atrybuty

Opcjonalnie. Określa wszystkie inne atrybuty z non-schematyczną przestrzenią nazw.

Przykład

Przykład 1

Poniższy przykład posiada 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 za pomocą trzech dodatkowych elementów (address, city i country), pochodzący 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" musi zawierać w kolejności następujące elementy: "firstname", "lastname", "address", "city" oraz "country".