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