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