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