Articles

een XSD voorbeeld

Dit hoofdstuk zal laten zien hoe een XML Schema te schrijven. U zult ook leren dat een schema kan worden geschreven op verschillende manieren.

een XML-Document

laten we eens kijken naar dit XML-document genaamd “shiporder.xml”:

Maak een XML-Schema

nu willen we een schema maken voor het bovenstaande XML-document.

we beginnen met het openen van een nieuw bestand dat we “shiporder” zullen noemen.xsd”. Om het schema te maken kunnen we gewoon de structuur in het XML-document volgen en elk element definiëren zoals we het vinden. We beginnen met de standaard XML declaratie gevolgd door het XS: schema element dat een schema definieert:

<?xml version= ” 1.0 “encoding=” UTF-8″?>
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>

< / xs:schema>

in het bovenstaande schema gebruiken we de standaard namespace (XS), en de URI geassocieerd met deze naamruimte is de Schemataaldefinitie, die de standaardwaarde heeft van http://www.w3.org/2001/XMLSchema.

vervolgens moeten we het element “shiporder” definiëren. Dit element heeft een attribuut en het bevat andere elementen, daarom beschouwen we het als een complex type. De onderliggende elementen van het “shiporder” – element zijn omgeven door een xs: sequence-element dat een geordende reeks van subelementen definieert:

<xs:element name=”shiporder”>
<xs:complexType>
<xs:sequence>

</xs:sequence>
</xs:complexType>
</xs:element>

Then we have to define the “orderperson” element as a simple type (because it does not contain any attributes or other elements). The type (xs:string) wordt voorafgegaan door het namespace-voorvoegsel geassocieerd met XML-Schema dat een vooraf gedefinieerd schema-gegevenstype aangeeft:

<xs:element name=”orderperson” type=”xs:string”/>

volgende moeten we twee elementen definiëren die van het complex zijn type: “shipto” en “item”. We beginnen met het definiëren van het “shipto” element:

met schema ‘ s kunnen we het aantal mogelijke voorvallen definiëren voor een element met de attributen maxOccurs en minOccurs. maxoccursusis het maximum aantal occurrences voor een element en minoccursusis het minimum aantal occurrences voor een element. De standaardwaarde voor zowel maxOccurs als minOccurs is 1!

nu kunnen we het element “item” definiëren. Dit element kan meerdere keren in een “shiporder” element verschijnen. Dit wordt gespecificeerd door het maxOccurs attribuut van het “item” element in te stellen op “unbounded” wat betekent dat er zoveel exemplaren van het “item” element kunnen zijn als de auteur wenst. Merk op dat het element” noot ” optioneel is. We hebben dit gespecificeerd door het attribuut minoccurses in te stellen op nul:

We kunnen nu het attribuut van het element “shiporder” declareren. Omdat dit een verplicht attribuut is specificeren we use= “vereist”.

Opmerking: De attribuutverklaringen moeten altijd als laatste komen:

<xs:attribuutnaam=”orderid” type=”xs:string” use=”required”/>

Hier is de volledige lijst van het schemabestand genaamd “shiporder.xsd”:

deel het Schema

de vorige ontwerpmethode is zeer eenvoudig, maar kan moeilijk te lezen en te onderhouden zijn wanneer documenten complex zijn.

de volgende ontwerpmethode is gebaseerd op het definiëren van alle elementen en attributen eerst, en vervolgens verwijzen naar hen met behulp van de Ref attribuut.

Hier is het nieuwe ontwerp van het schema bestand (“shiporder.xsd”):

met Named Types

de derde ontwerpmethode definieert klassen of types, die ons in staat stelt om elementdefinities te hergebruiken. Dit wordt gedaan door het benoemen van de simpleTypes en complexTypes elementen, en dan wijzen naar hen door middel van het type attribuut van het element.

Hier is het derde ontwerp van het schema bestand (“shiporder.xsd”):

het restrictie-element geeft aan dat het datatype is afgeleid van een W3C XML-Schemanaamruimte-datatype. Het volgende fragment betekent dus dat de waarde van het element of attribuut een tekenreekswaarde moet zijn:

<xs: restriction base= ” xs:string”>

The restriction element is more often used to apply restrictions to elements. Look at the following lines from the schema above:

<xs:simpleType name=”orderidtype”>
<xs:restriction base=”xs:string”>
<xs:pattern value=”{6}”/>
</xs:restriction>
</xs:simpleType>

Dit geeft aan dat de waarde van het element of attribuut een tekenreeks moet zijn, het moet precies zes tekens op een Rij zijn, en die tekens moeten een getal zijn van 0 tot 9.