przykład XSD
Ten rozdział pokaże, jak napisać schemat XML. Dowiesz się również, że schemat można napisać na różne sposoby.
dokument XML
rzućmy okiem na ten dokument XML o nazwie „shiporder.XML”:
Utwórz schemat XML
teraz chcemy utworzyć schemat dla powyższego dokumentu XML.
zaczynamy od otwarcia nowego pliku, który nazwiemy „shiporder.xsd”. Aby utworzyć schemat, możemy po prostu podążać za strukturą w dokumencie XML i zdefiniować każdy element tak, jak go znajdziemy. Zaczniemy od standardowej deklaracji XML, a następnie elementu XS: schema, który definiuje schemat:
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
…
</xs:schemat >
w powyższym schemacie używamy standardowej przestrzeni nazw (xs), a URI powiązany z tą przestrzenią nazw jest definicją języka schematu, która ma standardową wartość http://www.w3.org/2001/XMLSchema.
następnie musimy zdefiniować element „shiporder”. Ten element ma atrybut i zawiera inne elementy, dlatego uważamy go za typ złożony. Elementy potomne elementu „shiporder” są otoczone przez element xs: sequence, który definiuje uporządkowaną sekwencję podelementów:
<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:
następnie musimy zdefiniować dwa elementy, które będą miały są typu złożonego: „shipto” i „item”. Zaczynamy od zdefiniowania elementu „shipto”:
za pomocą schematów możemy zdefiniować liczbę możliwych wystąpień dla elementu z atrybutami maxOccurs i minOccurs. maxOccurs określa maksymalną liczbę wystąpień dla elementu, a minOccurs określa minimalną liczbę wystąpień dla elementu. Domyślną wartością dla maxOccurs i minOccurs jest 1!
teraz możemy zdefiniować element „item”. Ten element może pojawić się wielokrotnie wewnątrz elementu „shiporder”. Jest to określone przez ustawienie atrybutu maxOccurs elementu” item „na” unbounded”, co oznacza, że może wystąpić tyle wystąpień elementu” item”, ile chce autor. Zauważ, że element „note” jest opcjonalny. Określiliśmy to ustawiając atrybut minOccurs na zero:
możemy teraz zadeklarować atrybut elementu „shiporder”. Ponieważ jest to wymagany atrybut, określamy use= „required”.
Uwaga: deklaracje atrybutów muszą być zawsze ostatnie:
oto pełna lista pliku schematu o nazwie „shiporder.xsd”:
podziel schemat
poprzednia metoda projektowania jest bardzo prosta, ale może być trudna do odczytania i utrzymania, gdy dokumenty są złożone.
następna metoda projektowania polega na zdefiniowaniu najpierw wszystkich elementów i atrybutów, a następnie odwołaniu się do nich za pomocą atrybutu ref.
oto nowy projekt pliku schematu („shiporder.xsd”):
używanie nazwanych typów
trzecia metoda projektowania definiuje klasy lub typy, które umożliwiają nam ponowne użycie definicji elementów. Odbywa się to poprzez nazwanie elementów simpleTypes i complexTypes, a następnie skierowanie do nich poprzez atrybut type elementu.
oto trzeci projekt pliku schematu („shiporder.xsd”):
element restriction wskazuje, że typ danych pochodzi z przestrzeni nazw W3C XML Schema. Tak więc następujący fragment oznacza, że wartość elementu lub atrybutu musi być wartością łańcuchową:
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>
oznacza to, że wartość elementu lub atrybutu musi być ciągiem znaków, musi to być dokładnie sześć znaków w wierszu, a te znaki muszą być liczbą od 0 do 9.