tehnologii web - profs.info.uaic.robusaco/teach/courses/web/presentations/web... · ga .ro / ~ co /...
TRANSCRIPT
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/Tehnologii Web
tehnologii XML – supliment
⎆alte mijloace de validare a datelor XML
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
„Este de ajuns un dicționarpentru a conține toate cuvintele. Dar gândirii îi trebuie infinitul.”
Alexandr Puskin
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema
Recomandare a Consorțiului Web (2001, 2004)
XML Schema Primerwww.w3.org/TR/xmlschema-0/
XML Schema Structureswww.w3.org/TR/xmlschema-1/
XML Schema Data Typeswww.w3.org/TR/xmlschema-2/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema
Scop: validarea documentelor XML,
folosind sintaxa XML
se utilizează spațiul de nume definit dehttp://www.w3.org/2001/XMLSchema
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema
Schema
specificație formală a gramaticii asociateunui document XML
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema
Schema
specificație formală a gramaticii asociateunui document XML
flexibilitate sporită față de DTD
stocată extern într-un fișier XML .xsd
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema
Pentru a i se putea verifica validitatea, o instanță a unei clase de documente XML
trebuie să aibă asociată o schemă XML
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema
O schemă definește o clasă de documente XMLconformându-se unui model structural
va specifica modul de apariție și tipurile de datepe care le pot lua valorile construcțiilor XML
e.g., elemente, atribute etc.
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema
Definește un sistem de tipuri de dateîn termenii infoset-ului XML
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: utilizări
Verificarea tipurilor de dateîn contextul bazelor de date (relaționale),
mașinilor virtuale (JVM, CLR) etc.
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: utilizări
Serializarea automată a datelor+
Invocarea la distanță a metodelor
RMI (Remote Method Invocation), protocolul SOAP
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: utilizări
Generarea și editarea „inteligentă” de cod-sursă
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: utilizări
Validatoare generale de date(e.g., validarea formularelor)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
exemplu de schemă XML definind un cuprins de carte
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: definirea unei scheme
Elementul rădăcină: <xsd:schema>
Definirea/instanțierea unui element: <xsd:element>
Definirea/instanțierea unui atribut: <xsd:attribute>
Valorile permise pentru un element/atributaparțin unui tip de date – simplu sau complex: <xsd:SimpleType>, <xsd:ComplexType>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri
Fiecare instanță de element trebuie să aparținăunei clase (tip) de elemente
<element name="nume" type="tip" />
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri
Tipul poate fi:
simplu
nu permite ca un element să includăalte elemente și nici să aibă asociate atribute
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri
Tipul poate fi:
complex
permite ca elementele să cuprindăalte elemente (via reguli de apariție)
și să aibă asociate atribute
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri
Elementele de tip complex pot conține: declarații de elemente<element name="nume" type="tip" />
referințe la elemente definite<element ref="nume" reguli_aparitie="val" />
declarații de atribute<attribute name="nume" type="tip" />
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri
Tipurile complexe nu pot fi utilizatepentru a specifica tipurile valorilor atributelor
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri
Valorile de tip simplu sunt predefinitesau derivate din cele predefinite
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri predefinite
Numerice: byte, unsignedByte, hexBinary, integer,positiveInteger, negativeInteger, unsignedInt,
long, decimal, float, double,…Logice: boolean
Data & timp: time, dateTime, duration, date, gYear,…Șiruri: string, token, Name, QName etc.
URI: anyURIConstrucții XML: ID, IDREF, ENTITY,…
detalii: www.w3.org/TR/xmlschema-2
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri
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> (convenții privind regex din Perl)
o listă de valori: <xsd:enumeration>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri – exemple
Tipul desemnând numărul de capitol– un întreg în intervalul [0, 9]
<xsd:simpleType name="nrcapType">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="9" />
</xsd:restriction>
</xsd:simpleType>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri – exemple
Tipul desemnând numărul de capitol– un întreg în intervalul [0, 9]
reprezentarea grafică via aplicația <oXygen />
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri – exemple
Tipul specificând o adresă de e-mail
<xsd:simpleType name="addrType">
<xsd:restriction base="xsd:string">
<xsd:pattern value=".+@.+\.(.){2,4}" />
</xsd:restriction>
</xsd:simpleType> expresieregulată Perl
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: tipuri
Pentru tipurile simple pot fi definiteconstrângeri suplimentare – facets:
lungime: <xsd:length>lungime minimă: <xsd:minLength>lungime maximă: <xsd:maxLength>model (pattern): <xsd:pattern>mulțime de valori permise: <xsd:enumeration>controlul spațiilor albe: <xsd:whiteSpace>numărul de cifre: <xsd:totalDigits>numărul de cifre zecimale: <xsd:fractionDigits>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: reguli de apariție
Reguli (restricții) de aparițiea unei instanțe de element:
minOccurs="număr"maxOccurs="număr | unbounded"
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: reguli de apariție
Reguli de apariție a unui atribut:
use="required | optional | prohibited"
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: conținut
Valoarea predefinită a unui atributse specifică prin atributul default
Stabilirea de valori particularepentru elemente sau atribute
se realizează via atributul fixed
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: conținut
Conținutul unui element – derivarea via <xsd:extension>
Dorim elementului <autor> să atașăm atributul emailInițial: <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>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: conținut
Conținutul unui element – derivare via <xsd:extension>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: conținut
Conținutul unui element – derivare via <xsd:restriction>(se folosesc constrângeri)
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>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: conținut
Conținutul unui element
specificarea unui conținut mixt:
<xsd:complexType mixed="true">
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: conținut
Conținutul unui element
specificarea unui conținut vidse realizează prin <xsd:complexType>
care nu va conține decât eventuale declarații de atribute
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: conținut
Modele ale conținutului
alternativă: <xsd:choice>secvență: <xsd:sequence>
grupare: <xsd:group>apariție în orice ordine: <xsd:all>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: conținut
Exemplu: secvența de sub-elemente ale unui capitol
<!-- elementele trebuie să apară în ordine -->
<xsd:sequence>
<xsd:element name="nume"
type="xsd:string"/>
<xsd:element ref="autor"
minOccurs="1"
maxOccurs="unbounded"/>
<xsd:element name="descriere"
type="xsd:string"/>
</xsd:sequence>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
reprezentarea grafică a schemei XML definind structuradocumentului sitemap.xml folosit la indexarea unui sit Web
www.sitemaps.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: alte facilități
Legături între construcții XML:identificatori (de tip ID) și
referințe la identificatori (IDREF)
Elemente/atribute cu apariții unice: <xsd:unique>
Valori nil pentru elemente: nillable="true"
avansat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: alte facilități
Relații între două multimi de valori(posibil de tipuri diferite)
un element/atribut poate fi constrâns să fie validnumai dacă valoarea lui se află în mulțimea valorilor
altui element/atributspecificarea de relații între chei
se folosesc <xsd:key> și <xsd:keyRef>
avansat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: alte facilități
Suportul pentru abstractizare
se recurge la atributul abstract="true"
elementele/atributele declarate ca fiind „abstracte”nu pot fi utilizate într-o instanță de document
pentru a putea fi folosite trebuie derivatevia o schemă suplimentară – prin <xsd:include>
avansat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: alte facilități
Specificarea unor elemente/atribute generice(ale altor tipuri de documente) se realizează
prin elementele <xsd:any> și <xsd:anyAttribute>
avansat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: documentarea schemelor
Se folosește elementul <xsd:annotation> care poate include elementele:
<xsd:documentation> pentru utilizatorii umani<xsd:appInfo> destinat instrumentelor de procesare
apare ca prim element-copil al unor elementeprecum <xsd:schema>, <xsd:element>, <xsd:attribute>
sau <xsd:simpleType>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
<xs:element name="ul">
<xs:annotation>
<xs:documentation>O listă neordonată</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="li"/>
</xs:sequence>
<!-- poate include un grup de atribute -->
<xs:attributeGroup ref="attrs"/>
</xs:complexType>
</xs:element>
<xs:attributeGroup name="attrs">
<xs:attributeGroup ref="coreattrs"/> <!-- atribute de bază: id, class,…-->
<xs:attributeGroup ref="i18n"/> <!-- privind limba: lang -->
<xs:attributeGroup ref="events"/> <!-- evenimente: onclick etc. -->
</xs:attributeGroup>
fragment din schema XML referitoare la HTML
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: procesul de validare
În vederea validarii, o instanță de document trebuiesă declare un spatiu de nume având un URI
ce va desemna schema utilizată:
<s:radacina xmlns:s="uri_schema"xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=
"uri_schema doc_schema.xsd">…
</s:radacina>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema: procesul de validare
În cadrul definiției schemei,prin elementFormDefault și attributeFormDefault
se poate specifica faptul caelementele/atributele să fie prefixate obligatoriu
de un spațiu de nume
avansat
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
dtd: validare
validarea unui document XML folosind Visual Studio
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
XML Schema versus DTD
Moduri diferite de specificare (formală)a structurii și conținutului documentelor XML
Multitudine de tipuri de date XML Schema predefinite
Schemele pot fi deschise (extinse)
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
XML Schema versus DTD
Declarațiile spațiilor de nume nu pot fi exprimate în DTD
Schemele sunt mai ușor de validat/procesat, însă pot deveni „stufoase”
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
xschema
XML Schema 1.1
cea mai recentă recomandare W3C (2012)
structuri:www.w3.org/TR/xmlschema11-1/
tipuri de date:www.w3.org/TR/xmlschema11-2/
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
REgular LAnguage for XML Next Generation
standard OASIS (Organization for the Advancement of Structured Information Standards)
relaxng.org
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Bazat pe expresii regulate – șabloane (patterns)
colecții de noduri având o structură internă specifică
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Pattern-urile de bază vizândnodurile text, elemente și atribute:
text pattern
<text />
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Pattern-urile de bază vizândnodurile text, elemente și atribute:
element pattern
<element name="nume">pattern*</element>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Pattern-urile de bază vizândnodurile text, elemente și atribute:
attribute pattern
<attribute name="nume"><text /></attribute>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Modul de apariție a elementelor:
apariție opțională (0 sau 1 ori)<optional>
măcar o apariție<oneOrMore>
zero sau mai multe apariții<zeroOrMore>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Alternativă: <choice>
Grup de elemente: <group>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
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" />
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Definițiile pattern-urilor sunt incluse într-o gramatică(<grammar>) pentru care trebuie precizat
și elementul de start ce desemneazărădăcina documentului XML specificat:
<grammar xmlns="http://relaxng.org/ns/structure/1.0">
<start>
<element name="..."> ... </element>
</start>
<define name="..."> ... </define>
</grammar>
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Poate fi utilizată și o sintaxă compactă
start = element antologie {
poeme+,
attribute data { text } }
poeme = elem-poem+
elem-poem = element poem {
element titlu { text },
elem-vers+ }
elem-vers = element vers { text }
o antologie e compusădin cel puțin un poem
un poem include un titlu, urmat de mai
multe versuri
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Reprezentarea grafica a schemei de validaregenerata de <oXygen /> XML Editor
reprezentarea grafică a schemei de validaregenerată de <oXygen /> XML Editor
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
relax ng
Utilizat la definirea limbajelorRDF, DocBook, TEI (Text Encoding Initiative) etc.
poate specifica și modele nedeterministe
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/
Pentru detalii suplimentare + exemple, a se studia
S. Buraga, Tehnologii XML: www.slideshare.net/busaco/sabin-buraga-tehnologii-xml
Dr.
Sab
in B
ura
ga
profs.in
fo.uaic.ro/~busa
co/rezumat
validarea datelor XML
⎆XML Schema și RELAX NG