Ett XSD-exempel
det här kapitlet visar hur man skriver ett XML-Schema. Du kommer också att lära dig att ett schema kan skrivas på olika sätt.
ett XML-dokument
Låt oss ta en titt på detta XML-dokument som heter ”shiporder.xml”:
skapa ett XML-Schema
Nu vill vi skapa ett schema för XML-dokumentet ovan.
vi börjar med att öppna en ny fil som vi kommer att kalla ”shiporder.xsd”. För att skapa schemat kunde vi helt enkelt följa strukturen i XML-dokumentet och definiera varje element som vi hittar det. Vi börjar med standard XML-deklarationen följt av XS: schema-elementet som definierar ett schema:
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
…
< / xs:schema>
i schemat ovan använder vi standardnamnrymden (xs), och URI som är associerad med detta namnrymd är Schemaspråkdefinitionen, som har standardvärdet för http://www.w3.org/2001/XMLSchema.
Därefter måste vi definiera ”shiporder” – elementet. Detta element har ett attribut och det innehåller andra element, därför anser vi det som en komplex typ. Underordnade element i” shiporder ”- elementet omges av ett XS: – sekvenselement som definierar en ordnad sekvens av underelement:
<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:med NAMNRYMDSPREFIXET associerat med XML-Schema som indikerar en fördefinierad schemadatatyp:
Därefter måste vi definiera två element som är av samma typ: komplex typ: ”shipto” och ”item”. Vi börjar med att definiera” shipto ” – elementet:
med scheman kan vi definiera antalet möjliga händelser för ett element med attributen maxOccurs och minOccurs. maxOccurs anger det maximala antalet händelser för ett element och minOccurs anger det minsta antalet händelser för ett element. Standardvärdet för både maxOccurs och minOccurs är 1!
Nu kan vi definiera elementet ”objekt”. Detta element kan visas flera gånger i ett” shiporder ” – element. Detta anges genom att ange attributet maxOccurs för” item ”- elementet till” unbounded ”vilket innebär att det kan finnas så många förekomster av” item ” – elementet som författaren önskar. Observera att” note ” – elementet är valfritt. Vi har angett detta genom att ställa in attributet minOccurs till noll:
Vi kan nu deklarera attributet för” shiporder ” – elementet. Eftersom detta är ett obligatoriskt attribut anger vi use=”required”.
Obs: attributdeklarationerna måste alltid komma sist:
här är den fullständiga listan över schemafilen som heter ” shiporder.xsd”:
dela schemat
den tidigare designmetoden är mycket enkel, men kan vara svår att läsa och underhålla när dokument är komplexa.
nästa designmetod bygger på att definiera alla element och attribut först och sedan hänvisa till dem med hjälp av REF-attributet.
Här är den nya designen av schemafilen (”shiporder.xsd”):
använda namngivna typer
den tredje designmetoden definierar klasser eller typer, som gör att vi kan återanvända elementdefinitioner. Detta görs genom att namnge simpleTypes och complexTypes-element, och peka sedan på dem genom elementets typattribut.
Här är den tredje utformningen av schemafilen (”shiporder.xsd”):
begränsningselementet indikerar att datatypen härrör från en W3C XML-Schema namnrymdsdatatyp. Så betyder följande fragment att värdet på elementet eller attributet måste vara ett strängvärde:
The restriction element is more often used to apply restrictions to elements. Look at the following lines from the schema above:
<xs:restriction base=”xs:string”>
<xs:pattern value=”{6}”/>
</xs:restriction>
</xs:simpleType>
detta indikerar att värdet på elementet eller attributet måste vara en sträng, det måste vara exakt sex tecken i rad och dessa tecken måste vara ett tal från 0 till 9.