Egy XSD-példa
On szeptember 29, 2021 by adminEz a fejezet bemutatja, hogyan kell XML-sémát írni. Azt is megtudhatja, hogy egy sémát különböző módon lehet megírni.
Egy XML dokumentum
Nézzük meg ezt a “shiporder” nevű XML dokumentumot.xml”:
Egy XML-séma létrehozása
Most szeretnénk létrehozni egy sémát a fenti XML-dokumentumhoz.
Egy új fájl megnyitásával kezdjük, amelyet “shiporder.xsd”-nek fogunk hívni. A séma létrehozásához egyszerűen követhetjük az XML-dokumentum szerkezetét, és minden egyes elemet úgy definiálunk, ahogyan megtaláljuk. A szabványos XML deklarációval kezdünk, amelyet a sémát definiáló xs:schema elem követ:
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
…
</xs:schema>
A fenti sémában a szabványos névteret (xs) használjuk, és az ehhez a névtérhez tartozó URI a Schema nyelvi definíció, amelynek szabványos értéke http://www.w3.org/2001/XMLSchema.
A következőkben a “shiporder” elemet kell definiálnunk. Ez az elem egy attribútummal rendelkezik, és más elemeket is tartalmaz, ezért összetett típusnak tekintjük. A “shiporder” elem gyermekelemeit egy xs:sequence elem veszi körül, amely az alelemek rendezett sorozatát határozza meg:
<xs:complexType>
<xs:sequence>
…
</xs:sequence>
</xs:complexType>
</xs:element>
Ezután a “orderperson” elemet egyszerű típusként kell definiálnunk (mivel nem tartalmaz attribútumokat vagy más elemeket). A típus (xs:string) elé az XML Schemához kapcsolódó névtér-előtag kerül, amely egy előre definiált séma adattípust jelöl:
A következőkben két összetett típusú elemet kell definiálnunk: “shipto” és “item”. A “shipto” elem definiálásával kezdjük:
A sémák segítségével a maxOccurs és minOccurs attribútumokkal meghatározhatjuk egy elem lehetséges előfordulásainak számát. maxOccurs az elem maximális előfordulásainak számát, minOccurs pedig az elem minimális előfordulásainak számát adja meg. Az alapértelmezett érték mind a maxOccurs, mind a minOccurs esetében 1!
Most definiálhatjuk az “item” elemet. Ez az elem többször is megjelenhet egy “shiporder” elemen belül. Ezt úgy határozzuk meg, hogy az “item” elem maxOccurs attribútumát “unbounded”-re állítjuk, ami azt jelenti, hogy az “item” elem annyiszor fordulhat elő, ahányszor a szerző szeretné. Vegyük észre, hogy a “note” elem opcionális. Ezt a minOccurs attribútum nullára állításával határoztuk meg:
Most deklarálhatjuk a “shiporder” elem attribútumát. Mivel ez egy kötelező attribútum, megadjuk a use=”required” értéket.
Figyelem: Az attribútum deklarációknak mindig utolsónak kell következniük:
Itt van a “shiporder” nevű sémafájl teljes listája.xsd”:
A séma felosztása
Az előző tervezési módszer nagyon egyszerű, de nehezen olvasható és karbantartható, ha a dokumentumok összetettek.
A következő tervezési módszer azon alapul, hogy először minden elemet és attribútumot definiálunk, majd a ref attribútummal hivatkozunk rájuk.
Itt a sémafájl (“shiporder.xsd”) új tervezése:
Nevezett típusok használata
A harmadik tervezési módszer osztályokat vagy típusokat definiál, ami lehetővé teszi az elemdefiníciók újrafelhasználását. Ez úgy történik, hogy a simpleTypes és complexTypes elemeket elnevezzük, majd az elem type attribútumán keresztül mutatunk rájuk.
Itt a sémafájl (“shiporder.xsd”) harmadik tervezési módja:
A restriction elem jelzi, hogy az adattípus a W3C XML Schema névtér valamelyik adattípusából származik. A következő töredék tehát azt jelenti, hogy az elem vagy attribútum értékének string értéknek kell lennie:
A restriction elemet gyakrabban használják az elemekre vonatkozó korlátozások alkalmazására. Nézzük meg a következő sorokat a fenti sémából:
<xs:restriction base=”xs:string”>
<xs:pattern value=”{6}”/>
</xs:restriction>
</xs:simpleType>
Ez azt jelzi, hogy az elem vagy attribútum értékének stringnek kell lennie, pontosan hat karakterből kell állnia egy sorban, és ezeknek a karaktereknek 0 és 9 közötti számoknak kell lenniük.
Vélemény, hozzászólás?