XML Schema complexType-elementti

määrittely ja käyttö

complexType-elementti määrittelee monimutkaisen tyyppin. Monimutkaisen tyyppin elementti on XML-elementti, joka sisältää muita elementtejä ja/tai ominaisuuksia.

elementin tiedot

ilmentymien määrä arkkitehtuurissa rajoittumaton; elementissä kerran.
vanhempi elementti element, redefine, schema
sisältö annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute

Syntax

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|luettelo (laajennus|rajoitus))
final=(#all|luettelo (laajennus|rajoitus))
muita ominaisuuksia
>
(huomautus?,(yksinkertainen sisältö|monimutkainen sisältö|((ryhmä|kaikki| 
choice|sequence)?,((ominaisuus|ominaisusryhmä)*,mikä tahansa ominaisuus?))))
</complexType>

(?-merkki ilmoittaa complexType-elementissä, elementti voi esiintyä nollan tai yhden kerran, *-merkki ilmoittaa elementin voi esiintyä nollan tai useita kertoja.)

Ominaisuudet

id

Valinnainen. Määrittää elementin ainutlaatuisen ID:n.

name

Valinnainen. Määrittää elementin nimen.

abstract

Valinnainen. Määrittää, voidaanko monimutkaisia tyyppisiä käyttää instanssidokumentissa. Jos arvo on true, elementti ei voi käyttää suoraan monimutkaista tyyppiä, vaan sen on käytettävä johdettua monimutkaista tyyppiä. Oletusarvo on false.

mixed

Valinnainen. Määrittää, sallitaanko merkkidataa esiintyä monimutkaisen tyypin alielementtien välillä. Oletusarvo on false.

  • Jos simpleContent-elementti on alielementti, mixed-ominaisuutta ei sallita.
  • Jos complexContent-elementti on alielementti, mixed-ominaisuus voidaan korvata complexContent-elementin mixed-ominaisuuksilla.

block

Valinnainen. Estää, että tietyn johdettujen tyyppien omaavia monimutkaisia tyyppisiä käytetään korvaamaan kyseinen tyyppi. Arvo voi sisältää #all tai listan, joka on extension tai restrictionin alajoukko:

  • extension - Estää, että laajennettujen johdettujen monimutkaisten tyyppien käytön korvaamaan kyseistä monimutkaista tyyppiä.
  • restriction - Estää, että rajoitettujen johdettujen monimutkaisten tyyppien käytön korvaamaan kyseistä monimutkaista tyyppiä.
  • #all - Estää kaikki johdettujen monimutkaisten tyyppien käytön korvaamaan kyseistä monimutkaista tyyppiä.

final

Valinnainen. Estää, että tästä complexType-elementistä johdettuja tyyppisiä käytetään korvaamaan kyseinen tyyppi. Arvo voi sisältää #all tai listan, joka on extension tai restrictionin alajoukko.

  • extension - Estää johdotuksen laajennuksen kautta.
  • restriction - Estää johdotuksen rajoituksen kautta.
  • #all - Estää kaikki johdotukset (laajennukset ja rajoitukset).

muita ominaisuuksia

Valinnainen. Määrittelee minkä tahansa non-schema-nimellisen tilan määrittelyssä määritellyt määrittelyt.

Esimerkki

Esimerkki 1

Esimerkissä on monimutkainen tyyppi nimeltä "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>

Esimerkki 2

Esimerkissä on monimutkainen tyyppi "fullpersoninfo", joka laajentaa perityä tyyppiä kolmella lisäelementillä (address, city ja country) ja on johdettu toisesta monimutkaisesta tyyppistä "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>

Yllä olevassa esimerkissä "employee"-elementin on sisällytettävä järjestyksessä seuraavat elementit: "firstname", "lastname", "address", "city" ja "country".