Un exemplu XSD
Acest capitol va demonstra cum se scrie o schemă XML. Veți afla, de asemenea, că o schemă poate fi scrisă în moduri diferite.
un document XML
Să aruncăm o privire la acest document XML numit „shiporder.xml”:
creați o schemă XML
acum vrem să creăm o schemă pentru documentul XML de mai sus.
începem prin deschiderea unui nou fișier pe care îl vom numi „shiporder.xsd”. Pentru a crea schema am putea pur și simplu să urmăm structura din documentul XML și să definim fiecare element așa cum îl găsim. Vom începe cu declarația XML standard urmată de elementul XS: schema care definește o schemă:
<xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema”>
…
</xs:schema >
în schema de mai sus folosim spațiul de nume standard (xs), iar URI-ul asociat cu acest spațiu de nume este definiția limbajului schemei, care are valoarea standard a http://www.w3.org/2001/XMLSchema.
în continuare, trebuie să definim elementul „shiporder”. Acest element are un atribut și conține alte elemente, de aceea îl considerăm un tip complex. Elementele copil ale elementului „shiporder” sunt înconjurate de un element xs: sequence care definește o secvență ordonată de subelemente:
<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) este prefixat cu prefixul spațiului de nume asociat cu schema XML care indică un tip de date predefinit al schemei:
în continuare, trebuie să definim două elemente care sunt ale complexului tip: „shipto” și „element”. Începem prin definirea elementului „shipto”:
cu scheme putem defini numărul de apariții posibile pentru un element cu atributele maxOccurs și minOccurs. maxOccurs specifică numărul maxim de apariții pentru un element și minOccurs specifică numărul minim de apariții pentru un element. Valoarea implicită pentru ambele maxOccurs și minOccurs este 1!
acum putem defini elementul „element”. Acest element poate apărea de mai multe ori în interiorul unui element „shiporder”. Acest lucru este specificat prin setarea atributului maxOccurs al elementului” element „la” nelimitat”, ceea ce înseamnă că pot exista atâtea apariții ale elementului” element ” pe cât dorește autorul. Observați că elementul” notă ” este opțional. Am specificat acest lucru prin setarea atributului minOccurs la zero:
acum putem declara atributul elementului „shiporder”. Deoarece acesta este un atribut obligatoriu, specificăm use=”required”.
notă: declarațiile de atribute trebuie să dureze întotdeauna:
iată lista completă a fișierului schemă numit „shiporder.xsd”:
împărțiți Schema
metoda de proiectare anterioară este foarte simplă, dar poate fi dificil de citit și întreținut atunci când documentele sunt complexe.
următoarea metodă de proiectare se bazează mai întâi pe definirea tuturor elementelor și atributelor și apoi pe referirea la acestea folosind atributul ref.
aici este noul design al fișierului schemă („shiporder.xsd”):
folosind tipuri numite
a treia metodă de proiectare definește clase sau tipuri, care ne permite să reutilizăm definițiile elementelor. Acest lucru se face prin denumirea elementelor simpleTypes și complexTypes, apoi indicați-le prin atributul type al elementului.
aici este al treilea design al fișierului schemă („shiporder.XSD”):
elementul de restricție indică faptul că tipul de date este derivat dintr-un tip de date W3C XML Schema namespace. Deci, următorul fragment înseamnă că valoarea elementului sau atributului trebuie să fie o valoare șir:
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 >
aceasta indică faptul că valoarea elementului sau atributului trebuie să fie un șir, trebuie să fie exact șase caractere la rând, iar acele caractere trebuie să fie un număr de la 0 la 9.