Schema XML
O schemă XML este un document XML. Schemele XML au o extensie de fișier .xsd.
O schemă XML este utilizată pentru a guverna structura și conținutul unui document XML prin furnizarea unui șablon pentru documentele XML de urmat pentru a fi valide. Este un ghid pentru cum să vă structurați documentul XML, precum și pentru a indica componentele documentului XML (elemente și atribute – și relațiile acestora). Un editor XML va examina un document XML pentru a se asigura că acesta este conform cu specificațiile schemei XML în care este scris – pentru a se asigura că este valid.
Schemele XML generează încredere în transferul de date. Cu schemele, receptorul de date poate fi sigur că datele sunt conforme cu așteptările. Expeditorul și receptorul au o înțelegere reciprocă a ceea ce reprezintă datele.
Deoarece o schemă XML este un document XML, utilizați același limbaj – sintaxa standard de marcare XML – cu elemente și atribute specifice schemelor.
O schemă definește:
- structura documentului
- elementele
- atributele
- elementele copilului
- numărul de elemente copil
- ordinea elementelor
- numele și conținutul tuturor elementelor
- tipul de date pentru fiecare element
Referință pentru schemă
Aceasta este partea din documentul XML care face referire la o schemă XML:
Exemplul 5: Referința schemei documentului XML
<tourGuide
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xsi:noNamespaceSchemaLocation='city.xsd'>
Aceasta este partea pe care am lăsat-o deoparte când am descris elementul rădăcină în documentul XML de bază din secțiunea anterioară. Atributele suplimentare ale elementului rădăcină <tourGuide> fac referire la schema XML (este atributul schemaLocation).
xmlns:xsi = ‘http: //www.w3.org/2001/XMLSchema-instance‘ – face referire la spațiul de nume instanță W3C Schema
xsi:noNamespaceSchemaLocation = ‘city.xsd’ – face referire la documentul schemei XML (city.xsd)
Document schemă
Mai jos este un exemplu de schemă XML utilizând modelul nostru TourGuide. Ne vom referi la el în timp ce descriem părțile unei scheme XML.
Exemplu 6: document schemă XML pentru entitatea city
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="unqualified">
<xsd:element name="tourGuide">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="city" type="cityDetails" minOccurs = "1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="cityDetails">
<xsd:sequence>
<xsd:element name="cityName" type="xsd:string"/>
<xsd:element name="adminUnit" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
<xsd:element name="population" type="xsd:integer"/>
<xsd:element name="area" type="xsd:integer"/>
<xsd:element name="elevation" type="xsd:integer"/>
<xsd:element name="longitude" type="xsd:decimal"/>
<xsd:element name="latitude" type="xsd:decimal"/>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="history" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
<!--
Note: Latitude and Longitude are decimal data types.
The conversion is from the usual form (e.g., 50º 17' 35")
to a decimal by using the formula degrees+min/60+secs/3600.
-->
Prolog
Amintiți-vă că schema XML este în esență un document XML și, prin urmare, trebuie să înceapă cu prologul, care, în cazul unei scheme, include:
- declarația XML
- declarația elementului de schemă
Declarația XML:
<?xml version="1.0" encoding="UTF-8"?>
Declarația elementului schemei:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">
Elementul schemă este similar cu un element rădăcină – conține toate celelalte elemente din schemă.
Atributele elementului schemă includ:
xmlns – XML NameSpace – adresa URL a site-ului care descrie elementele XML și tipurile de date utilizate în schemă.
xmlns:xsd – Toate elementele și atributele cu prefixul „xsd” aderă la vocabularul desemnat în spațiul de nume dat.
elementFormDefault – Elementele din spațiul de nume țintă sunt fie necesare, fie nu trebuie să fie calificate cu prefixul spațiului de nume. Acest lucru este util mai ales atunci când se face referință la mai multe spații de nume. În acest caz, „elementFormDefault” trebuie să fie calificat, deoarece trebuie să indicați ce spațiu de nume utilizați pentru fiecare element. Dacă faceți referire la un singur spațiu de nume, atunci „elementFormDefault” poate fi necalificat. Poate că utilizarea calificată ca implicită este cea mai prudentă, astfel nu uitați din greșeală să indicați la ce spațiu de nume faceți referire.
Declarații de elemente
Definesc elementele din schemă.
Includ:
- numele elementului
- tipul de date al elementului (opțional)
Format de declarație element de bază:
<xsd:element name="name"
type="type">
Tip simplu
declară elemente care:
- NU au elemente pentru copii
- NU au atribute
exemplu:
<xsd:element name="cityName"
type="xsd:string"
/>
Valoare implicită
Dacă unui element nu i se atribuie o valoare, atunci se atribuie valoarea implicită.
exemplu:
<xsd:element name="description"
type="xsd:string"
default="really cool place to visit!"
/>
Valoare fixă
Un atribut care este definit ca fix trebuie să fie gol sau să conțină valoarea fixă specificată. Nu sunt permise alte valori.
exemplu:
<xsd:element name="description"
type="xsd:string"
'''fixed="you
must visit this place - it is awesome!"'''
/>
Tip complex
declară elemente care:
- pot avea elemente copil
- pot avea atribute
exemple:
1. Elementul rădăcină „tourGuide” conține un element copil „city”. Acest lucru este prezentat aici:
Tipul complex fără nume
<xsd:element name="tourGuide">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="city" type="cityDetails" minOccurs = "1" maxOccurs="unbounded" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Indicatori de ocurență:
- minOccurs = numărul minim de ori în care poate apărea un element (aici este de 1 dată)
- maxOccurs = numărul maxim de ori în care poate apărea un element (aici este un număr nelimitat de ori, „nelimitat”)
2. Elementul părinte „city” conține mai multe elemente copil: ‘cityName’, ‘adminUnit’, ‘country’, ‘population’, etc. De ce acest set complex de elemente nu începe cu linia:
? Elementul „city” a fost deja definit mai sus în cadrul elementului complex „tourGuide” și i s-a dat tipul „cityDetails”. Acest tip de date, „cityDetails”, este utilizat aici pentru identificarea secvenței elementelor copil pentru elementul părinte „city”.
<xsd:element name="city"
type="cityDetails">
Denumit tip complex – și, prin urmare, poate fi reutilizat în alte părți ale schemei
<xsd:complexType name="cityDetails">
<xsd:sequence>
<xsd:element name="cityName" type="xsd:string"/>
<xsd:element name="adminUnit" type="xsd:string"/>
<xsd:element name="country" type="xsd:string"/>
<xsd:element name="population" type="xsd:integer"/>
<xsd:element name="area" type="xsd:integer"/>
<xsd:element name="elevation" type="xsd:integer"/>
<xsd:element name="longitude" type="xsd:decimal"/>
<xsd:element name="latitude" type="xsd:decimal"/>
<xsd:element name="description" type="xsd:string"/>
<xsd:element name="history" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
Eticheta <xsd:sequence> indică faptul că elementele copil trebuie să apară în ordinea, secvența, specificată aici.
3. Elementele care au atribute sunt, de asemenea, desemnate ca tip complex.
A. această linie de document XML:
ar fi definită în schema XML ca:
<adminUnit class="state"
name="Cayo" />
<xsd:element name="adminUnit">
<xsd:complexType>
<xsd:attribute name="class" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
b. această linie de document XML:
ar fi definită în schema XML ca:
<adminUnit class="state">Cayo</adminUnit>
<xsd:element name="adminUnit">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="class" type="xsd:string" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Declarații de atribute
Declarațiile de atribute sunt utilizate în definiții de tip complex. Am văzut câteva declarații de atribut în cel de-al treilea exemplu al Elementului de tip complex.
<xsd:attribute name="class" type="xsd:string" />
Declarații de tip date
Acestea sunt conținute în declarațiile de element și atribut ca: type=” „.
Tipuri de date comune ale schemei XML
Schema XML are o mulțime de tipuri de date încorporate. Cele mai frecvente tipuri sunt:
string | un șir de caractere |
decimal | un număr zecimal |
integer | un număr întreg |
boolean | valorile adevărate sau false sau 1 sau 0 |
date | o dată, modelul de dată poate fi specificat, cum ar fi AAAA-LL-ZZ |
time | o oră a zilei, modelul orar poate fi specificat, cum ar fi HH: MM: SS |
dateTime | o combinație de dată și oră |
anyURI | dacă elementul va conține o adresă URL |
Pentru o listă întreagă de tipuri de date simple încorporate, consultați http://www.w3.org/TR/xmlschema-2/#built-in-datatypes
Include texte traduse din Wikibooks
Lasă un răspuns