Documente Academic
Documente Profesional
Documente Cultură
Abstract
O XML Schema este un document bine format (de regula cu extensia .xsd) care defineste
structura si tipul elementelor unui document XML in vederea valiadarii.
Table of Contents
1. Introducere ................................................................................................................................ 1
2. XML Schema ............................................................................................................................ 2
2.1. Referirea la o XML Schema ............................................................................................... 2
2.2. Definirea unui fisier XML Schema ...................................................................................... 2
2.3. Tipuri simple ................................................................................................................... 3
2.4. Definirea unui element simplu ............................................................................................ 3
2.5. Definirea atributelor .......................................................................................................... 4
2.6. Definirea restrictiilor/fatetelor ............................................................................................. 5
2.6.1. Restrictii pentru numere .......................................................................................... 5
2.6.2. Restrictii pentru stringuri ......................................................................................... 5
2.6.3. Restrictii pe o multime de valori ............................................................................... 6
2.7. Definirea elementelor complexe .......................................................................................... 6
2.7.1. Definirea elementelor vide ....................................................................................... 6
2.7.2. Definitii globale si locale ........................................................................................ 7
2.7.3. Utilizarea tipurilor declarate .................................................................................... 7
2.7.4. Extinderea unui tip ................................................................................................. 7
2.8. Indicatori de ordine .......................................................................................................... 8
2.8.1. Indicatorul de secventa xs:sequence .......................................................................... 8
2.8.2. Indicatorul all xs:all ............................................................................................... 8
2.8.3. Indicatorul de alegere xs:choice ................................................................................ 8
2.9. Indicatori de aparitie ......................................................................................................... 8
2.9.1. Indicatorul maxOccurs ............................................................................................ 8
2.9.2. Indicatorul minOccurs ............................................................................................ 9
2.10. Indicatorii de grupare ...................................................................................................... 9
2.10.1. Indicatori de grupare a elementelor .......................................................................... 9
2.10.2. Indicatori de grupare a atributelor ............................................................................ 9
3. Exemplu .................................................................................................................................. 10
3.1. Divizarea schemei .......................................................................................................... 11
3.2. Asignarea de nume tipurilor .............................................................................................. 12
4. Bibliografie ............................................................................................................................. 12
1. Introducere
XML Schema a inceput ca o initiativa a companiei Microsoft. Intre timp insa, consortiul W3C a preluat aceasta
initiativa si a dezvoltat un set mai larg de cerinte si caracteristici pentru documente ce descriu tipuri de documente.
Acestea sunt reunite sub numele de Document Content Description, informatii despre acest proiect sunt disponibile
la http://www.w3.org/TR/NOTE-dcd. In anul 2001 propunerea a devenit recomandare a W3C. Spre deosebire de
(sau in plus fata de) DTD-uri, XML schema permite definirea regulilor si relatiilor intre elemente si attribute folosind
un fisier XML (cu alte cuvinte, o schema XML este descrisa intr-un fisier XML). In plus, se adauga suport pentru
spatii de nume (namespaces), tipuri de date si caracteristici mai avansate cum ar fi constrangerile (constraints).
XML Schema
2. XML Schema
O XML Schema:
Referirea la o XML Schema intr-un document XML se face in cadrul elementului radacina:
<?xml version="1.0"?>
<elementRadacina xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="url.xsd" >
...
</elementRadacina>
unde:
Referirea la instanta de de schema XML utilizata
Locatia unde poate fi gasita definitia schemei
Exemplu:
<?xml version="1.0">
<CARTE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="CARTE.xsd" >
<TITLU>XML Bible</TITLU>
<AUTOR>Elliotte Rusty Harold</AUTOR>
<EDITURA> IDG Books Worldwide</EDITURA>
<AN_APARITIE>2002</AN_APARITIE>
</CARTE>
XML Schema
...
...
</xs:schema>
unde:
indica faptul ca elementele si tipurile de date utilizate in schema (schema, element, complexType, sequence,
string, boolean, etc.) provin din namespace-ul "http://www.w3.org/2001/XMLSchema". De asemenea specifica
ca aceste elemente si tipuri de date ce provin din namespace-ul "http://www.w3.org/2001/XMLSchema"
trebuie sa fie prefixate cu xs:
indica faptul ca elementele din definita prin aceasta schema provin din namespace-ul "http://inf.ucv.ro"
indica namespace-ul implicit
indica ca toate elemente XML utilizate trebuie sa fie calificate de namespace.
Exemplu:
nu are atribute
nu este vid
Totusi informatia text continuta de element poate sa fie de diferite tipuri. Ea poate sa fie de unul dintre tipurile
predefinite in XML Schema (boolean, string, date, etc.), sau poate fi de un tip definit de noi. De asemenea se pot
adauga restricii (fatete) asupra tipurilor de date pentru a stabili limitele, sau putem sa stabilim un patern peste care
trebuie sa se potriveasca.
unde:
xs:string
xs:decimal
xs:integer
xs:boolean
xs:date
xs:time
XML Schema
<NUME>Popescu Maria</NUME>
<VARSTA>21</VARSTA>
<DATA_NASTERII>1985-09-23</DATA_NASTERII>
atunci definitiile corespunzatoare ale acestor elemente simple in XML Schema sunt:
<xs:element name="NUME" type="xs:string"/>
<xs:element name="VARSTA" type="xs:integer"/>
<xs:element name="DATA_NASTERII" type="xs:date"/>
Elementele simple pot avea in anumite situatii valori implicite SAU o valore fixa. Sintaxa declararii acestora este:
<xs:element name="nume" type="tip" default="valoare-implicita"/>
si respectiv:
<xs:element name="nume" type="tip" fixed="valoare-fixa"/>
O valoare implicita este atribuita unui element atunci cand nu este specificata nici o alta valoare valoare. In exemplul
urmator valoarea implicita este "alb-negru":
<xs:element name="TIP-IMPRIMANTA" type="xs:string" default="alb-negru"/>
O valoare fixa este atribuita de asemenea automat unui element si nu putem specifica nici o alta valoare in afara
de cea specificata. In exemplul urmator valoarea fixa este "romana":
<xs:element name="CETATENIA" type="xs:string" fixed="romana"/>
unde:
Sintaxa XML Schema pentru definirea atributelor permite de asemenea definirea de valori implicite (default)
pentru atribute SAU atribute cu valori fixe. Sintaxa definirii acestora este urmatoarea:
<xs:attribute name="nume" type="tip" default="valoare-implicita" />
si respectiv:
<xs:attribute name="nume" type="tip" fixed="valoare-fixa" />
De asemenea sintaxa permite stabilirea faptului ca atributul este optional sau obligatoriu. Sintaxa definirii acestora
este urmatoarea:
<xs:attribute name="nume" type="tip" use="optional" />
si respectiv:
<xs:attribute name="nume" type="tip" use="required" />
XML Schema
(sau xs:attribute)
Exemplu:
<xs:element name="nota">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="1">
<xs:maxInclusive value="10">
</xs:restriction>
</xs:simpleType>
</xs:element>
minInclusive - numarul trebuie sa fie mai mare sau egal decat o valoare data
minExclusive - numarul trebuie sa fie mai mare strict decat o valoare data
maxInclusive - numarul trebuie sa fie mai mic sau egal decat o valoare data
maxExclusive - numarul trebuie sa fie mai mic strict decat o valoare data
totalDigits - numarul de cifre ale numarului trebuie sa aiba exact o valoare data
minLength - lungimea sirului trebuie sa fie mai mare sau egala cu o valoare data
maxLength - lungimea sirului trebuie sa fie mai mica sau egala cu o valoare data
whiteSpace - nu este chiar o restrictie, ea spune cum sa trateze spatiile albe (white spaces):
XML Schema
Exemplu: Daca presupunem ca elementul INITIALE este format din exact 3 caractere toate litere mari atunci
definirea elementului este urmatoarea:
<xs:element name="INITIALE">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z][A-Z][A-Z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
Exemplu:
<xs:element name="PERSOANA">
<xs:complexType>
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="PRENUME" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
XML Schema
In exemplul anterior, am definit un complexType avand complexContent, adica numai elemente. Elementul complexContent semnaleaza ca intentionam sa restrictionam sau sa extindem un tip complex. Restrictia defineste un
atribut cod ce poate lua numai valori pozitive.
Putem sa definim schema si astfel:
<xs:element name="PRODUS">
<xs:complexType>
<xs:attribute name="cod" type="xs:positiveInteger"/>
</xs:complexType>
</xs:element>
Exemplu:
<xs:complexType name="PERSOANA">
<xs:sequence>
<xs:element name="NUME" type="xs:string"/>
<xs:element name="PRENUME" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:element name="STUDENT" type="PERSOANA"/>
<xs:element name="PROFESOR" type="PERSOANA"/>
Warning
Nu putem utiliza o referinta la un tip daca el este local unui alt tip!
XML Schema
XML Schema
In exemplu anterior elementul NUME-COPIL trebuie sa apara cel putin odata (valoarea implicita pentru minOccurs
este 1 implicit) si de maxim 5 ori in secventa ce descrie elementul PERSOANA.
In exemplu anterior elementul NUME-COPIL poate sa nu apara deloc sau de maxim 5 ori in secventa ce descrie
elementul PERSOANA.
Note
Pentru toate tipurile de indicatori de grupare sau ordine (any, all, choice, sequence, group name, and group
reference) valoarea implicita pentru maxOccurs and minOccurs este 1!
Ulterior ne putem referi la acel grup in cadrul altui grup sau in cadrul definirii tip complex astfel:
<xs:element name="PERSOANA" type="INFO-PERSOANA"/>
<xs:complexType name="INFO-PERSOANA">
<xs:sequence>
<xs:group ref="GRUP-PERSOANA"/>
<xs:element name="TARA" type="xs:string"/>
</xs:sequence>
</xs:complexType>
XML Schema
Ulterior ne putem referi la acel grup in cadrul altui grup sau in cadrul definirii tip complex astfel:
<xs:element name="PERSOANA" type="INFO-PERSOANA"/>
<xs:complexType name="INFO-PERSOANA">
<xs:attributeGroup ref="GRUP-PERSOANA">
</xs:complexType>
3. Exemplu
Sa consideram urmatorul document XML ce isi propune sa reprezinte un ordin de plata:
<?xml version="1.0" encoding="ISO-8859-1"?>
<shiporder orderid="889923" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
</shiporder>
10
XML Schema
11
XML Schema
</xs:complexType>
</xs:element>
</xs:schema>
4. Bibliografie
XML Schema Part 0: Primer Second Edition W3C Recommendation 28 October 2004, David C. Fallside,
Priscilla Walmsley
12
XML Schema
XML Schema Part 1: Structures Second Edition W3C Recommendation 28 October 2004, Henry S. Thompson,
David Beech, Murray Maloney, Noah Mendelsohn
XML Schema Part 2: Datatypes Second Edition W3C Recommendation 28 October 2004, Paul V. Biron,
Kaiser Permanente, Ashok Malhotra
Elliotte Rusty Harold, XML Bible. IDG Books Worldwide, Inc, 919 E. Hillsdale Blvd., Suite 400, Foster City,
CA 94404
13