Generalitati despre XML Schema
Scopul XML Schema
XML Schema este limbaj utilizat pentru a descrie structura documentelor XML. Datorita confuziei dintre XML Schema ca standard W3C si utilizarea aceluiasi termen pentru a descrie limbaje schema in general, o parte a comunitatii de utilizatori se refera la acest limbaj ca WXS (de la W3C XML Schema), in timp de altii folosesc termenul XSD (de la XML Schema Document – adica un document scris in XML Schema).
Ca orice limbaj de validare a XML-urilor, XSD este utilizat pentru a defini un set de reguli conform carora un document XML este valid sau nu. Documentele XML care adera la o anumita structura XML Schema sunt instante ale acelei structuri. Retine ca o instanta valida nu este acelasi lucru cu un document bine-format, deoarece un document XML bine format respecta sintaxa XML, fara a adera insa neaparat la un XML Schema. Deci, un document XML poate fi bine format fara a fi valid, dar nu poate fi valid decat daca este bine format.
Capacitatile XML Schema
Este posibil sa ai deja experienta cu DTD. Asemanarea dintre acest standard si XML Schema este ca ambele definesc clase de documente XML.
DTD a aparut cu mult inaintea XML-urilor, fiind creat pentru a defini un standard pentru documentele scrise in SGML, parintele XML-ului. Cu toate ca DTD-urile sunt inca destul de populare, XML Schema este un limbaj de programare mult mai puternic.
Iata cateva dintre limitarile DTD:
DTD nu are tipuri de date predefinite
DTD nu admite tipuri de date definite de utilizator
DTD permite un control limitat asupra cardinalitatii (numarul de aparitii al unui element in interiorul parintelui sau)
DTD nu suporta Namespaces sau orice alta cale de refolosire sau importare a altor scheme
O prima privire
O schema XML descrie structura unui document XML, definind ceea ce contine sau ar trebui sa contina fiecare element. Un element este limitat de tipul sau. Spre exemplu, un element de tip complex poate contine elemente “copil” sau atribute, in timp ce un elemente de tip simplu nu poate contine decat text.
Diagrama de mai jos iti prezinta tipurile de elemente din XML Schema.
In XML Schema poti folosi tipurile de date predefinite sau iti pot crea propriile tipuri de date. Iata o analiza complexa a tipurilor de date din XML Schema:
Elementele pot fi simple (Simple Type) sau complexe (Complex Type)
Elementele de tip simplu pot contine doar text. Nu pot avea elemente “copil” sau atribute.
Toate tipurile de date predefinite sunt tipuri simple (ex. xs:string)
Poti crea tipuri simple prin restrictia altor tipuri simple. De exemplu, un tip de date e-mail poate fi derivat din string prin specificarea unui sablon specific adreselor de e-mail.
Tipurile simple pot fi atomice (ex. string si integer) sau non-atomice (ex. listele)
Elementele de tip complex pot contine elemente “copil” sau atribute, dar si texte.
In mod implicit, elementele de tip complex contin alte elemente “copil”
Elementele de tip complex pot fi restrictionate sa aiba continut simplu, adica sa contina doar text. Ele sunt diferite de tipurile simple prin faptul ca au si atribute.
Elementele de tip complex pot avea continut mixt – o combinatie intre text si elemente “copil”.
Un exemplu simplu
Mai jos poti vedea un exemplu de XML Schema, alcatuit dintr-un element de tip complex cu doua elemente “copil” simple.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Autor">
<xs:complexType>
<xs:sequence>
<xs:element name="Nume" type="xs:string" />
<xs:element name="Prenume" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Explicarea codului
Dupa cum poti vedea, un document XML Schema este de fapt un document XML, ce urmeaza toate regulile de sintaxa ale oricarui alt document XML. Schemele XML trebuie de asemeni sa urmeze regulile definite in “Schema schemelor”, care defineste, pe langa alte lucruri, structura numelor unui element sau atribut din XML Schema.
Elementul radacina din schema XML este xs:schema, ce contine atributul xml:ns cu valoarea
http://www.w3.org/2001/XMLSchema , indicand faptul ca documentul ar trebui sa urmeze regulile pentru XML Schema. Acest lucru va deveni mai evident dupa ce vei invata mai multe despre spatii de nume (Namespaces).
Elementul xs:schema contine un element xs:element. In acest caz, tag-ul xs:element defineste elementul Autor ca fiind un tip complex ce contine alte doua elemente copil: Nume si Prenume, de tip xs:string.
Validarea unui document XML
In sectiunea anterioara ai vazut un exemplu de schema simpla XML, care defineste structura unui element Autor. Sa presupunem ca schema a fost salvata intr-un fisier cu numele Autor.xsd. Codul prezentat mai jos prezinta o instanta valida a schemei XML, adica un document care respecta regulile definite in schema:
<?xml version="1.0"?>
<Autor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Autor.xsd">
<Nume>Mark</Nume>
<Prenume>Twain</Prenume>
</Autor>
Explicarea codului
Acesta este un document XML simplu, ce are ca radacina un element Autor. La randul lui, elementul Autor contine doua elemente “copil”: Nume si Prenume, exact asa cum cere schema XML asociata.
Atributulxmlns:xsi al elementului radacina indica faptul ca acest document XML este o instanta a unei scheme XML. Schema XML este specificata de catre atributul xsi:noNamespaceSchemaLocation.
Concluzii
In acest tutorial ai invatat cum sa creezi o schema simpla si cum sa o folosesti pentru a valida un document XML. Acum poti trece la caracteristici mai avansate ale XML Schema.
|