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