XML Schema complexType element
definition and usage
complexType element defines a complex type. A complex type element is an XML element that contains other elements and/or attributes.
element information
occurrence | unrestricted within the schema; once within the element. |
parent element | element, redefine, schema |
content | annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute |
Grammatica
<complexType id=ID name=NCName abstract=true|false mixed=true|false block=(#all|lijst van (extensie|beperking)) final=(#all|lijst van (extensie|beperking)) alle attributen > (annotatie?,(eenvoudige inhoud|complex inhoud|((groep|alles| choice|sequence)?,((eigenschap|eigenschapsGroep)*,iedere eigenschap?)))) </complexType>
(? Symbool wordt gedeclareerd in het complexType-element, het element kan nul of één keer voorkomen, * symbool declareert dat het element nul of meerdere keren kan voorkomen.)
Eigenschappen
id
Optioneel. Bepaalt de unieke ID van dit element.
name
Optioneel. Bepaalt de naam van het element.
abstract
Optioneel. Bepaalt of complex types mogen worden gebruikt in het instantiedocument. Als de waarde true is, kan het element niet direct het complex type gebruiken, maar moet een complex type dat van dit complex type is afgeleid worden gebruikt. De standaardwaarde is false.
mixed
Optioneel. Bepaalt of karaktersymbolen mogen verschijnen tussen de subelementen van dit complex type. De standaardwaarde is false.
- Als het simpleContent-element een subelement is, is de mixed-eigenschap niet toegestaan.
- Als het complexContent-element een subelement is, kan de mixed-eigenschap worden overschreven door de mixed-eigenschap van het complexContent-element.
block
Optioneel. Voorkomt dat complex types met de gespecificeerde afgeleide types worden gebruikt om het complex type te vervangen. De waarde kan #all bevatten of een lijst, die een subset is van extension of restriction:
- extension - Voorkomt dat afgeleide complex types via extensie worden gebruikt om het complex type te vervangen.
- restriction - Voorkomt dat afgeleide complex types via restrictie worden gebruikt om het complex type te vervangen.
- #all - Voorkomt dat alle afgeleide complex types worden gebruikt om het complex type te vervangen.
final
Optioneel. Voorkomt dat de gespecificeerde type van het complexType-element wordt afgeleid. De waarde kan #all bevatten of een lijst, die een subset is van extension of restriction.
- extension - Voorkom afgeleiden door uitbreiding.
- restriction - Voorkom afgeleiden door beperking.
- #all - Voorkom alle afgeleiden (uitbreiding en beperking).
alle attributen
Optioneel. Bepaal elke andere eigenschap met een non-schematische naamruimte.
Voorbeeld
Voorbeeld 1
Het volgende voorbeeld heeft een complex type element genaamd "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>
Voorbeeld 2
In het volgende voorbeeld is er een complex type "fullpersoninfo", dat door gebruik te maken van drie aanvullende elementen (address, city en country) het geïnheriteerde type uitbreidt, afgeleid van een andere complex 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>
In het bovenstaande voorbeeld moet het "employee" element in volgorde de volgende elementen bevatten: "firstname", "lastname", "address", "city" en "country".