web - xml validation
TRANSCRIPT
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tehnologii Web
Dr. SabinCorneliu BuragaFacultatea de Informatica
Universitatea “A.I.Cuza” – Iasi, Romania
http://www.infoiasi.ro/~busaco/
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Marcarea datelor pentru <Web />
Partea IV: Validari XML
Detalii in [TX, 102‐136]
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
“Este de ajuns un dictionarpentru a contine toate cuvintele. Dar gindirii ii trebuie infinitul.”
Alexandr Puskin
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML (Extensible Markup Language)Procesul de validare
DTD (Document Type Definition)Scheme XMLRELAX NGAlternative
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Dorim ca informatiile marcate in XMLsa poata fi regasite, reutilizate si partajate
intre aplicatii
necesitati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
O cerinta importanta este de a cunoaste: elementele/atributele ce pot fi specificatemodul lor de structurare (e.g., ordinea, numarul minim/maxim de aparitii,...)
tipul continutuluice este valid si ce reprezinta eroare
necesitati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Grupuri de indivizi specifica vocabularul XML(setul de elemente/atribute permise)
si regulile de marcare –modelele structurale
Uzual, grupurile reprezinta: o companie, o industrie, persoane impartasind un interes
comun, dezvoltatori/comercianti de instrumentede marcare (tool vendors),
un consortiu/organizatie non‐profit
solutie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modelul structural se aplica unei clase dedocumente XML, in vederea verificarii
– via un analizor (procesor, parser XML) –a corectitudinii instantelor de documente
apartinind acelei clase
solutie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Se au in vedere:numirea elementelor/atributelordefinirea regulilor de utilizare a acestoraspecificarea structurii si continutuluidefinirea constringeriloroferirea unui set de conventii de numire
solutie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Apare necesitatea specificariiunui set de constringeri asociate documentelorXML, astfel incit datele XML sa fie verificatedaca sunt valide sau nu din punct de vedere
structural ori al tipului continutului
solutie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modalitatile de specificare a constringerilorse pot baza pe:descrierireguli
sabloane
solutie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modalitatile de specificare a constringerilorse pot baza pe:descrieri
“exista un element <student> avind un atribut numecare are continutul...”
DTD, XML Schema
solutie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modalitatile de specificare a constringerilorse pot baza pe:
reguli
“orice element <student> va avea un atribut nume, iar continutul acestui atribut se va conforma unei reguli...”
Schematron
solutie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modalitatile de specificare a constringerilorse pot baza pe:
sabloane – pattern‐uri
“structura documentelor din clasa ‘student’ trebuiesa se potriveasca (match) conform urmatorului sablon...”
RELAX NG
solutie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
DTD (Document Type Definition)Scop & caracterizare
Specificarea tipurilor de documenteExemple
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tipuri de documenteDocument Type Definition (DTD)
specificare formala a tipurilor de documente(constituienti & structura)
dtd
In spiritullimbajelor formale
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Documentele XML pot avea sau nu un DTD atasatintern sau extern documentului XML pe care‐l valideaza
Daca DTD‐ul lipseste, documentul trebuiesa respecte un numar minim de constringeri
document bine formatat – well formed
dtd
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Regulile sintactice de specificarea meta‐elementelor DTD provin de la SGML
DTD‐ul poate exprima structura continutului, indicatorii de aparitie, conectorii
Detalii: http://www.w3.org/TR/RECxml
dtd
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Un DTD specifica un tip de document:<!DOCTYPE element_radacina [
Declaratii de elemente, atribute, entitati,...]>
<!DOCTYPE projects [...
]>
dtd
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
<!ELEMENT projects (project+)><!ELEMENT project (title, desc?, stud, url?)><!ELEMENT title (#PCDATA)><!ELEMENT desc (#PCDATA)><!ELEMENT stud (#PCDATA)><!ELEMENT url (#PCDATA)>
dtd: elemente
Conținut (neterm. & term.)#PCDATA, EMPTY, ANY* + ? indicatori de apariție
, | conectori
Meta‐element
Nume de element
(neterminal)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Continutul unui element poate fi:Sir de caractere (#PCDATA – parsed character data)Vid (EMPTY)Orice alt marcaj/sir de caractere (ANY)
dtd: elemente
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Un element poate aparea:O singura data (numele elementului)De oricite ori, inclusiv niciodata (*)Macar o data (+)De zero sau unu ori (?)
dtd: elemente
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Ordinea aparitiei elementelor poate fi:Secventa (,)Alternativa (|)
dtd: elemente
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
<!ATTLIST projectsupdate CDATA #REQUIRED
><!ATTLIST project
class (A | B | C) "A">
dtd: atribute
Tipul conținutului CDATA, ID, ENTITY,...Enumerare de valori
Elementul căruia îi este asociat
Mod de apariție#REQUIRED#IMPLIED#FIXED
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Continutul unui atribut poate fi:Sir de caractere (CDATA – character data)Identificator unic (ID)Referinta la un identificator (IDREF)Referinta la o entitate (ENTITY)Enumerare de valori
dtd: atribute
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Un atribut poate fi declarat sa apara:Obligatoriu (#REQUIRED)Optional (#IMPLIED)Fix – se foloseste intotdeauna o valoare apriorispecificata (#FIXED)
dtd: atribute
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Alt exemplu – genealogia unor persoane:
<!ELEMENT person (name | birth | death | note | father | mother)*>
<!ATTLIST personid ID #REQUIREDgender (M | F) #IMPLIEDxmlns CDATA #FIXED "http://person.org/gen/"
>
dtd
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Interne analizate – text expandat de analizor<!ENTITY busaco "Sabin Buraga"><coordonator>&busaco;</coordonator>
Externe analizate – ca mai sus, dar se declara intr‐un fisier extern
Interne cu parametri – folosite doar in DTDPredefinite
<!ENTITY quot """>
dtd: entitati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Exemplu de specificare a entitatilor interne cu parametri:
<!ENTITY % event "(reference*, place?, date?)"><!ELEMENT birth %event;><!ELEMENT death %event;>
dtd: entitati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
O instanta de document trebuie sa aiba atasatao declaratie a tipului caruia ii apartine:
<!DOCTYPE html PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<!DOCTYPE projects SYSTEM "projects.dtd">
dtd: validare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Validarea documentului se realizeazaprin intermediul unui analizor – procesor, parser – XML
(Jing, libxml, MSXML, Xerces,...) sau utilitar (OpenSP, <oXygen/>, xmllint, XML Nanny etc.)
dtd: validare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML SchemaScop & caracterizareDefinirea unei schemeXML Schema versus DTD
UtilizariViitor
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Recomandare a Consortiului Web (2001, 2004)
XML Schema Primerhttp://www.w3.org/TR/xmlschema0/
XML Schema Structureshttp://www.w3.org/TR/xmlschema1/
XML Schema Data Typeshttp://www.w3.org/TR/xmlschema2/
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Scop: validarea documentelor XML, folosind sintaxa XML
Se foloseste spatiul de nume definit dehttp://www.w3.org/2001/XMLSchema
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Schemaspecificatie formala a gramaticii asociate
unui document XML
flexibilitate sporita fata de DTD
stocata extern intr‐un fisier .xsd
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru a i se putea fi verificata validitatea, o instanta a unei clase de documente XML trebuie sa aiba asociata o schema XML
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
O schema defineste o clasa de documente XMLconformindu‐se unui model structural
Suplimentar, specifica un sistem de tipuri de date in termenii infoset‐ului XML
O schema va specifica modul de aparitie si tipurilede date pe care le pot lua valorile constructiilor XML
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Verificarea tipurilor de date in contextul bazelor de date (relationale), masinilor virtuale (JVM, CLR) etc.
Serializarea automata a datelorInvocarea la distanta a metodelor – RMI, SOAPGenerarea de cod‐sursaEditoare “inteligente”Validatoare generale de date (e.g., validarea formularelor electronice)
xschema: utilizari
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Elementul radacina: <xsd:schema>
Definirea/instantierea unui element: <xsd:element>
Definirea/instantierea unui atribut: <xsd:attribute>
Valorile permise pentru un element/atributapartin unui tip de date (simplu sau complex): <xsd:SimpleType>, <xsd:ComplexType>
xschema: definirea unei scheme
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Fiecare instanta de element trebuie sa apartinaunei clase (tip) de elemente
<element name="nume" type="tip" />
xschema: tipuri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Tipul poate fi: Simplu – nu permite ca un element sa includaalte elemente si nici sa aiba asociate atribute
Complex – permite ca elementele sa includaalte elemente (reguli de aparitie) sisa aiba asociate atribute
xschema: tipuri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Elementele de tip complex contin: declaratii de elemente<element name="nume" type="tip" />
referinte la elemente definite<element ref="nume" reguli_aparitie="val" />
declaratii de atribute<attribute name="nume" type="tip" />
xschema: tipuri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Elementele de tip simplu sunt predefinitesau derivate din cele predefinite
Tipurile complexe nu pot fi utilizate pentrua specifica tipurile valorilor atributelor
xschema: tipuri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Numerice: byte, unsignedByte, hexBinary, integer, positiveInteger, negativeInteger, int, unsignedInt, long, decimal, float, double,…
Logice: booleanData & timp: time, dateTime, duration, date, gYear, gMonth, gDay,…
Siruri: string, token, Name, QName etc.URI: anyURIConstructii XML: ID, IDREF, ENTITY,…
Detalii: www.w3.org/TR/xmlschema2
xschema: tipuri predefinite
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Definirea de tipuri simple derivate din cele predefinite se face via <xsd:restriction>care poate specifica:
un interval: <xsd:minInclusive>, <xsd:maxInclusive><xsd:minExclusive>, <xsd:maxExclusive>
un model (pattern):<xsd:pattern> (conventii regexp din Perl)
o lista de valori: <xsd:enumeration>
xschema: tipuri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
<xsd:simpleType name="nrcapType"> <xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" /> <xsd:maxInclusive value="8" />
</xsd:restriction> </xsd:simpleType> <xsd:simpleType name="addrType">
<xsd:restriction base="xsd:string"> <xsd:pattern value=".+@.+\.(.){2,4}" />
</xsd:restriction> </xsd:simpleType>
xschema: tipuri – exemple
Expresieregulata Perl
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru tipurile simple pot fi specificateconstringeri suplimentare – facets:
Lungime: <xsd:length>Lungimeminima: <xsd:minLength>Lungimemaxima: <xsd:maxLength>Model (pattern): <xsd:pattern>Multime de valori permise: <xsd:enumeration>Controlul spatiilor albe: <xsd:whiteSpace>Numarul de cifre: <xsd:totalDigits>Numarul de cifre zecimale: <xsd:fractionDigits>
xschema: tipuri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Reguli (restrictii) de aparitiea unei instante de element:
minOccurs=“numar”maxOccurs=“numar | unbounded”
Reguli de aparitie a unui atribut:use=“required | optional | prohibited”
xschema: reguli de aparitie
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Valoarea predefinita a unui atribut se specificaprin atributul default
Setarea de valori particulare pentru elementesau atribute se face via atributul fixed
xschema: continut
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Continutul unui element – derivarea via <xsd:extension>
Dorim elementului <autor> sa atasam atributul emailInitial: <xsd:element name="autor" type="xsd:string" />Acum:
<xsd:element name="autor"><xsd:complexType><xsd:simpleContent>
<xsd:extension base="xsd:string"><xsd:attribute name="email" type="addrType" />
</xsd:extension></xsd:simpleContent></xsd:complexType>
</xsd:element>
xschema: continut
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Continutul unui element – derivarea via <xsd:restriction>(se folosesc constringeri)
Titlul unui capitol va avea lungime de maxim 50 de caractere:
<xsd:element name="titlu"><xsd:complexType>
<xsd:simpleContent><xsd:restriction base="titluType">
<xsd:maxLength value="50" /></xsd:restriction>
</xsd:simpleContent></xsd:complexType>
</xsd:element>
xschema: continut
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Continutul unui elementSpecificarea unui continut mixt: <xsd:complexType mixed=“true”>
Specificarea unui continut vid se realizeazaprin <xsd:complexType> care nu va continedecit declaratii de atribute
xschema: continut
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modele ale continutuluiAlternativa: <xsd:choice>Secventa: <xsd:sequence>Grupare: <xsd:group>Aparitie in orice ordine: <xsd:all>
xschema: continut
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Alte facilitatiLegaturi intre constructii XML:identificatori (de tip ID) sireferinte la identificatori (IDREF)
Elemente/atribute cu aparitii unice: <xsd:unique>
Valori nil pentru elemente: nillable=“true”
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Alte facilitatiRelatii intre doua multimi de valori(posibil de tipuri diferite)Un element/atribut poate fi constrins sa fie valid ddaca valoarea lui se afla in multimea valoriloraltui element/atributspecificarea de relatii intre chei
Se folosesc <xsd:key> si <xsd:keyRef>
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Suportul pentru abstractizareSe realizeaza prin atributul abstract=“true”
Elementele/atributele declarate ca fiind “abstracte”nu pot fi utilizate intr‐o instanta de document
Pentru a putea fi folosite trebuie derivate via o schema suplimentara – prin <xsd:include>
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Specificarea unor elemente/atribute generice(ale altor tipuri de documente) se realizeaza
prin elementele <xsd:any> si <xsd:anyAttribute>
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Se foloseste elementul <xsd:annotation> care poate include elementele:
<xsd:documentation> pentru utilizatorii umani<xsd:appInfo> destinat instrumentelor de procesare
Trebuie sa apara ca prim element‐copil al unor elementeca <xsd:schema>, <xsd:element>, <xsd:attribute> sau <xsd:simpleType>
xschema: documentarea schemelor
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
In vederea validarii, o instanta de documenttrebuie sa declare un spatiu de nume cu un URI
desemnind schema utilizata si o instantaa acestei scheme:
<s:radacina xmlns:s="uri_schema"xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=
"uri_schema doc_schema.xsd">…
</s:radacina>
xschema: procesul de validare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
In cadrul definitiei schemei, se poate specifica faptul caelementele sau atributele sa fie prefixate obligatoriude un spatiu de nume prin elementFormDefault
si attributeFormDefault
<xsd:schema xmlns="urn:infoiasi.ro:xsdCuprins" targetNamespace="urn:infoiasi.ro:xsdCuprins" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"attributeFormDefault="unqualified">
… </xsd:schema>
xschema: procesul de validare
veziexemplele
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML Schema versus DTDModuri diferite de specificare formalaa continutului documentelor XMLSchemele pot fi deschise (extinse)
Tipuri de date XML Schema predefinitesunt variate si complexe
Declaratiile spatiilor de nume nu pot fi exprimate in DTDSchemele sunt mai usor de validat/procesat
xschema
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML Schema 1.1In curs de standardizare la W3C
http://www.w3.org/TR/xmlschema11‐1/
http://www.w3.org/TR/xmlschema11‐2/
xschema: viitor
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML Schema 1.1Noutati:
Declaratiile de tipuri simple/complexeau asociate atributul scopeApare tipul anyAtomicType
Suport pentru controlul versiunilor
Si altele...
xschema: viitor
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
REgular LAnguage for XML Next Generation
Standard OASIS
Vezi http://relaxng.org si http://dsdl.org
Bazat pe expresii regulate – sabloane (patterns): colectii de noduri cu o structura interna specifica
relax ng
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Se iau in consideratie pattern‐urile de baza privitoarela nodurile text, elemente si atribute:Text pattern
<text />Element pattern
<element name="nume">pattern*</element>Attribute pattern
<attribute name="nume"><text /></attribute>
relax ng
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modul de aparitie a elementelor: <optional>, <oneOrMore>, <zeroOrMore>
Alternativa: <choice>
Grup de elemente: <group>
relax ng
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Definirea de pattern‐uri noi:<define name="elementul-student">
<element name="student"> <text /> </element><optional>
<element name="adresa"> <text /> </element> </optional>
</define> referite prin <ref name="elementul-student" />
relax ng
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Definitiile pattern‐urilor sunt incluse intr‐o gramatica(<grammar>) pentru care trebuie precizat si elementulde start ce desemneaza radacina documentului XMLspecificat:
<grammar xmlns="http://relaxng.org/ns/structure/1.0"> <start>
<element name="..."> ... </element> </start> <define name="..."> ... </define>
</grammar>
relax ng
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Utilizat la definirea limbajelorXHTML 2.0, RDF, DocBook,
TEI (Text Encoding Initiative) etc.
Poate specifica si modele nedeterministe
relax ng
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
intrebare
Exista si alte modalitati de validare XML?
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XDR (XML Data Reduced) –MicrosoftMult mai simplu decit XML SchemaImplementat de MSXML.DLL (versiuni <3)Tipurile de date apartin spatiului de numeurn:schemas‐microsoft‐com:datatypes
Detalii & exemple in [TW, B44‐52]Actualmente, considerat invechit
alternative
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
SchematronLimbaj bazat pe reguli, utilizind expresii XPathin loc de gramatici
Regulile de aparitie se specifica prin asertiunivia pattern‐uri XSLT
Validarea se bazeaza pe procesorul XSLTProcesoare: Cocoon (Java), Schematron.NET
alternative
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Validarea folosind specificatii multiple: NVDL (Namespacebased Validation Dispatching Language)
www.nvdl.org
Convertirea dintr‐un format in altul(asigurarea inter‐operabilitatii): Trang
www.thaiopensource.com/relaxng/trang.html
Ambele sunt oferite si de <oXygen />
alternative
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
!!
validari: demo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
rezumat
Validarea documentelor XMLDTD, XML Schema, RELAX NG, alternative