Element complexType van XML Schema

Definitie en gebruik

Het element complexType definieert een complex type. De elementen van een complex type zijn XML-elementen die andere elementen en/or eigenschappen bevatten.

Elementinformatie

Voorkomingsaantal Binnen het schema onbeperkt; binnen het element een keer.
Hoofdlement element, herdefiniëren, schema
Inhoud 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 (extension|restriction))
final=(#all|lijst van (extension|restriction))
alle attributen
>
(annotation?,(simpleContent|complexContent|((group|all| 
(choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?)))
</complexType>

(? Symbool wordt gedeclareerd in het element complexType, het element kan nul of één keer voorkomen, * symbool declareert dat het element nul of meerdere keren kan voorkomen.)

Eigenschappen

id

Optioneel. Bepaal het unieke ID van dit element.

name

Optioneel. Bepaal de naam van het element.

abstract

Optioneel. Bepaal of complexe typen mogen worden gebruikt in het instantiedocument. Als de waarde true is, kunnen elementen niet direct deze complexe type gebruiken, maar moeten ze gebruik maken van complexe typen die zijn afgeleid van deze complexe type. De standaardwaarde is false.

mixed

Optioneel. Bepaal of karaktersymbolen mogen verschijnen tussen de subelementen van deze complexe type. De standaardwaarde is false.

  • Als het element simpleContent een subelement is, is de eigenschap mixed niet toegestaan.
  • Als het element complexContent een subelement is, kan de eigenschap mixed overschreven worden door de eigenschap mixed van het element complexContent.

block

Optioneel. Voorkom dat complexe typen met een gespecificeerde afgeleide type worden gebruikt om de complexe type te vervangen. De waarde kan #all bevatten of een lijst, die een subset is van extension of restriction:

  • extension - Voorkom dat complexe typen die zijn afgeleid door extensie worden gebruikt om de complexe type te vervangen.
  • restriction - Voorkom dat complexe typen die zijn afgeleid door restrictie worden gebruikt om de complexe type te vervangen.
  • #all - Voorkomt dat alle afgeleide complexe typen worden gebruikt om dit complexe type te vervangen.

final

Optioneel. Voorkomt het afleiden van de opgegeven type van dit complexType-element. De waarde kan #all bevatten of een lijst, die een subset is van extension of restriction.

  • extension - Voorkomt afgeleide door uitbreiding.
  • restriction - Voorkomt afgeleide door beperking.
  • #all - Voorkomt alle afgeleide (uitbreiding en beperking).

alle attributen

Optioneel. Stelt elke andere eigenschap met een non-schematische naamruimte vast.

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 heeft een complex type "fullpersoninfo", dat door gebruik te maken van drie aanvullende elementen (address, city en country) het geërfd 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 de volgende elementen in de juiste volgorde bevatten: "firstname", "lastname", "address", "city" en "country".