O schema descrie continutul unui document XML, similar modului in care schema unei baze de date descrie datele dintr-o baza de date. In general, o schema defineste diferite modele pentru un limbaj de tip XML.
Avand in vedere limitarile limbajului DTD, consortiul W3C a constituit XML Schema Working Group pentru a dezvolta un limbaj pentru definirea de scheme XML (XSD – XML Schema Definition language sau XML Schema language). Specificatiile XML Schema au fost definite prin intermediul a trei documente de baza:
• XML Schema Part 0 Primer: asigura o introducere in XML Schema si descrie principalele facilitati;
• XML Schema Part 1 Structures: prezinta structurile din limbajul XML Schema, care permit descrierea documentelor XML;
• XML Schema Part 2 Datatypes: indica facilitatile pentru definirea tipurilor de date in schemele XML.
O schema XML este un document care defineste continutul si structura unui document XML. Pentru un document XML, o schema specifica elementele si atributele care pot fi utilizate, ordinea elementelor, numarul de aparitii, continutul si tipul de date pentru fiecare element sau atribut. Schemele XML ofera o alta posibilitate de validare a documentelor XML, in afara DTD.
Principalele diferente dintre XML Schema si DTD pot fi sintetizate astfel:
• XML Schema utilizarea sintaxa XML pentru descrierea documentelor; in acest fel, descrierea documentelor se realizeaza intr-o forma care poate fi extinsa mult mai usor;
• declaratiile XML Schema ofera structuri interne mai complexe decat declaratiile DTD;
• schemele XML utilizeaza un sistem imbunatatit pentru tipuri de date; XML Schema vine cu o serie de tipuri de date predefinite, printre care boolean, date, decimal, string, time, dar asigura si un mecanism de generare a unor tipuri de date noi;
• schemele XML utilizeaza un stil diferit de declarare a elementelor si atributelor fata de DTD; pe langa posibilitate de a declara individual elemente si atribute, dezvoltatorii pot crea modele, care pot fi aplicate unor grupuri de elemente;
• schemele XML ofera suport pentru spatiile de nume XML.
O schema XML si documentul descris de aceasta sunt stocate in fisiere diferite. Cu alte cuvinte, schemele XML sunt externe documentelor XML pe care le descriu. O schema reprezinta un tip special de document XML, care respecta specificatiile XML Schema ale W3C. Schemele XML sunt stocate in fisiere cu extensia .xsd.
Pentru a utiliza scheme XML sunt necesare cel putin doua documente; unul contine definitia schemei, iar cel de-al doilea contine documentul XML descris prin intermediul schemei. Un document XML poate utiliza insa si elemente descrise de mai multe scheme XML.
Un document XML este valid daca respecta regulile stabilite prin intermediul unei scheme XML, in mod similar unui document XML care contine si respecta regulile unui DTD.
Urmatorul exemplu prezinta un document XML, care descrie cartile dintr-o librarie, si o schema atasata acestui document.
<?xml version="1.0" encoding="UTF-8"?> | |
<!-- carti.xml --> | |
<carti xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://virtualcampus.ro/ carti.xsd"> | |
<carte status="disponibila"> | |
<titlu>Cel mai iubit dintre pamanteni</titlu> | |
<autor>Marin Preda</autor> | |
<pagini>573</pagini> | |
<pret>48.20</pret> | |
</carte> | |
</carti> |
Avand in vedere faptul ca o schema XML reprezinta un document XML, aceasta trebuie sa inceapa cu o declaratie XML. Se poate observa ca elementul document din schema XML este denumit schema si ca acesta apartine spatiului de nume http://www.w3.org/ 2001/XMLSchema. Schema XML contine o serie de elemente specifice, care permit definirea continutului si structurii documentului XML asociat.
<?xml version="1.0" encoding="UTF-8"?> | |
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" | |
targetNamespace="https://virtualcampus.ro/mda/" xmlns="https://virtualcampus.ro/mda/"> | |
... | |
</xs:schema> |
Elementul radacina al unei scheme XML poate sa detina urmatoarele atribute:
• xmlns:xsd indica faptul ca elementele si tipurile de date utilizate in schema XML apartin spatiului de nume precizat; aceste elemente si tipuri de date trebuie prefixate cu xsd sau un alt prefix stabilit de catre utilizator;
• targetNamespace indica faptul ca elementele definite prin intermediul acestei scheme apartin spatiului de nume de la adresa precizata;
• xmlns specifica spatiul de nume implicit;
• elementFormDefault indica faptul ca elementele din documentul XML, definite in schema, trebuie sa fie calificate prin intermediul spatiului de nume.
Referirea schemei XML se realizeaza in cadrul elementului radacina al unui document XML. Documentul XML mai poarta numele de instanta valida a schemei XML.
Referirea schemei XML se poate face prin precizarea in radacina documentului XML a atributului xsi:schemaLocation, caz in care valoarea atributului contine un spatiu de nume si un identificator pentru schema, sau prin precizarea atributului xsi:noNamespaceSchemaLocation, care are ca si valoare locatia schemei XML.
<element_radacina xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="URL schema.xsd"> ...
<element_radacina xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema.xsd"> ...