An XSD Example
On 29 syyskuun, 2021 by adminTässä luvussa esitellään XML-skeeman kirjoittaminen. Opit myös, että skeema voidaan kirjoittaa eri tavoin.
An XML Document
Katsotaanpa tätä XML-dokumenttia nimeltä ”shiporder.xml”:
XML-skeeman luominen
Haluamme nyt luoda skeeman yllä olevalle XML-dokumentille.
Aloitamme avaamalla uuden tiedoston, jota kutsumme nimellä ”shiporder.xsd”. Luodaksemme skeeman voisimme yksinkertaisesti seurata XML-dokumentin rakennetta ja määritellä jokaisen elementin sitä mukaa kuin löydämme sen. Aloitamme tavallisella XML-julistuksella, jota seuraa xs:schema-elementti, joka määrittelee skeeman:
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
…
</xs:schema>
Yllä olevassa skeemassa käytämme vakiomuotoista nimiavaruutta (xs), ja tähän nimiavaruuteen liittyvä URI on Schema-kielen määritelmä, jonka vakioarvo on http://www.w3.org/2001/XMLSchema.
Seuraavaksi meidän on määriteltävä ”shiporder”-elementti. Tällä elementillä on attribuutti ja se sisältää muita elementtejä, joten pidämme sitä monimutkaisena tyyppinä. ”shiporder”-elementin lapsielementtejä ympäröi xs:sequence-elementti, joka määrittelee alaelementtien järjestetyn sarjan:
<xs:complexType>
<xs:sequence>
…
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:elementti>
Tällöin meidän on määriteltävä elementti ”tilaushenkilö” yksinkertaiseksi tyypiksi (koska se ei sisällä attribuutteja tai muita elementtejä). Tyypin (xs:string) etuliitteenä on XML Schemaan liittyvä nimiavaruuden etuliite, joka ilmaisee ennalta määritellyn skeematietotyypin:
Seuraavaksi on määriteltävä kaksi elementtiä, jotka ovat kompleksista tyyppiä: ”shipto” ja ”item”. Aloitamme määrittelemällä ”shipto”-elementin:
Skeemojen avulla voimme määritellä elementin mahdollisten esiintymien määrän maxOccurs- ja minOccurs-attribuuttien avulla. maxOccurs määrittää elementin esiintymien maksimimäärän ja minOccurs määrittää elementin esiintymien minimimäärän. Sekä maxOccursin että minOccursin oletusarvo on 1!
Nyt voimme määritellä elementin ”item”. Tämä elementti voi esiintyä useita kertoja ”shiporder”-elementin sisällä. Tämä määritetään asettamalla ”item”-elementin maxOccurs-attribuutin arvoksi ”unbounded”, mikä tarkoittaa, että ”item”-elementtiä voi esiintyä niin monta kertaa kuin tekijä haluaa. Huomaa, että ”note”-elementti on valinnainen. Olemme määritelleet tämän asettamalla minOccurs-attribuutin arvoksi nolla:
Voidaan nyt ilmoittaa ”shiporder”-elementin attribuutti. Koska kyseessä on pakollinen attribuutti, määrittelemme use=”required”.
Huomautus: Attribuutti-ilmoitusten on aina tultava viimeisenä:
Tässä on täydellinen listaus skeematiedostosta nimeltä ”shiporder.xsd”:
Skeeman jakaminen
Edellinen suunnittelumenetelmä on hyvin yksinkertainen, mutta voi olla vaikea lukea ja ylläpitää, kun asiakirjat ovat monimutkaisia.
Seuraava suunnittelumenetelmä perustuu siihen, että kaikki elementit ja attribuutit määritellään ensin ja sitten niihin viitataan ref-attribuutilla.
Tässä on skeematiedoston (”shiporder.xsd”) uusi rakenne:
Käyttämällä nimettyjä tyyppejä
Kolmannessa suunnittelumenetelmässä määritellään luokkia tai tyyppejä, mikä mahdollistaa elementtimäärittelyjen käyttämisen uudelleen. Tämä tapahtuu nimeämällä simpleTypes- ja complexTypes-elementit ja osoittamalla niihin elementin type-attribuutin kautta.
Tässä on skeematiedoston (”shiporder.xsd”) kolmas suunnittelutapa:
Rajoituselementti ilmaisee, että tietotyyppi on johdettu W3C:n XML Schema -nimiavaruuden tietotyypistä. Seuraava katkelma tarkoittaa siis, että elementin tai attribuutin arvon on oltava merkkijonoarvo:
Rajoituselementtiä käytetään useammin rajoitusten soveltamiseen elementteihin. Katso seuraavia rivejä yllä olevasta skeemasta:
<xs:restriction base=”xs:string”>
<xs:pattern value=”{6}”/>
</xs:restriction>
</xs:simpleType>
Tämä ilmaisee, että elementin tai attribuutin arvon on oltava merkkijono, siinä on oltava täsmälleen kuusi merkkiä peräkkäin ja näiden merkkien on oltava numeroita 0-9.
Vastaa