XML Schema complexType-element
definition og brug
complexType-element definerer en kompleks type. Element af kompleks type er XML-elementer, der indeholder andre elementer og/eller egenskaber.
elementinformation
forekomsten af | ikke begrænset inden for arkitekturen; én gang inden for elementet. |
overordnede element | element, redefinere, schema |
indhold | annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute |
Grammatik
<complexType id=ID name=NCName abstract=true|false mixed=true|false block=(#all|liste af (extension|restriction)) final=(#all|liste af (extension|restriction)) Enhver attribut > (annotation?,(simpleContent|complexContent|((group|all| choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)))) </complexType>
(? Symboler er deklarerede i complexType-elementet, elementet kan forekomme nul eller én gang, * Symboler er deklarerede elementer kan forekomme nul eller flere gange.)
Egenskaber
id
Valgfri. Angiver det unikke ID for dette element.
name
Valgfri. Angiver elementets navn.
abstract
Valgfri. Angiver, om komplekse typer kan bruges i instancedokumentet. Hvis værdien er true, kan elementet ikke bruge denne komplekse type direkte, men skal bruge en kompleks type, der er afledt fra denne komplekse type. Standardværdien er false.
mixed
Valgfri. Angiver om karakterdata kan forekomme mellem underelementerne i denne komplekse type. Standardværdien er false.
- Hvis simpleContent-elementet er et underelement, er mixed-egenskaben ikke tilladt.
- Hvis complexContent-elementet er et underelement, kan dette mixed-egenskab overskrives af complexContent-elementets mixed-egenskab.
block
Valgfri. Forhindrer, at komplekse typer med den specificerede afledningstype bruges til at erstatte denne komplekse type. Værdien kan indeholde #all eller en liste, som er en delmængde af extension eller restriction:
- extension - Forhindrer, at komplekse typer, der er afledt ved udvidelse, bruges til at erstatte denne komplekse type.
- restriction - Forhindrer, at komplekse typer, der er afledt ved begrænsning, bruges til at erstatte denne komplekse type.
- #all - Forhindrer, at alle afledte komplekse typer bruges til at erstatte denne komplekse type.
final
Valgfri. Forhindrer at den specificerede type afledes fra dette complexType-element. Værdien kan indeholde #all eller en liste, som er en delmængde af extension eller restriction.
- extension - Forhindrer afledelse gennem udvidelse.
- restriction - Forhindrer afledelse gennem begrænsning.
- #all - Forhindrer alle afledte (udvidelser og begrænsninger).
Enhver attribut
Valgfri. Angiv alle andre attributter med non-schema navneområde.
Eksempel
Eksempel 1
I eksemplet nedenfor har en kompleks type element med navnet "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>
Eksempel 2
I eksemplet nedenfor findes en kompleks type "fullpersoninfo", som udvider den arvede type ved hjælp af tre supplerende elementer (address, city og country) og er afledt af en anden kompleks type "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>
I de ovenstående eksempler skal "employee"-elementet følge i rækkefølge de følgende elementer: "firstname", "lastname", "address", "city" og "country".