Download - Web07ModelareXML XPath ValidariXML DTD
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
1/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a
c o /
Tehnologii Web
un model de date pentru Web (II)
//*XML Infoset, acces via XPath, validări DTD
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
2/103
, ,
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a
c o /
„Înț eleptul te învață prin faptele sale,nu prin cuvintele sale.”
Chuang-Tzu
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
3/103
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a
c o /
Cum modelăm (reprezent ăm) datele?
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
4/103
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a
c o /
xml-infoset
Scop:
specificarea unui model de date (abstract)pentru XML
recomandare W3C, 2004
www.w3.org/TR/xml-infoset
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
5/103
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a
c o /
xml-infoset
Se oferă un punct de vedere comun referitor la:
serializarea datelor semi-structurate
reprezentare internă (în memorie) ↔ fișier text XML
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
6/103
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a
c o /
xml-infoset
Se oferă un punct de vedere comun referitor la:
crearea/folosirea de API-uri de procesare XML
…într-o manieră standardizat ă
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
7/103
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a
c o /
xml-infoset
Se oferă un punct de vedere comun referitor la:
definirea unor specificaț ii de nivel (mai) înalt exemple: XPath, XSLT sau XML Schema
…care recurg la același model abstract XML
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
8/103
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a
c o /
xml-infoset
Modelul asigura inter-operabilitatea diferitelortehnologii, interfeț e de programare (API-uri)și aplicaț ii XML
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
9/103
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a
c o /
xml-infoset: concepte
Document (document information item)
considerat a fi un arbore, cu rădăcina dat ăde proprietatea [document element]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
10/103
D r . S a b i n
B u r a g a
p r o f s . i
n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Document (document information item)
are proprietatea [children] desemnândlista de „lucruri” (items) din document,
în ordinea dat ă de algoritmul DFS (depth-first search)
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
11/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Element specifică un element XML
posedă proprietatea [parent] oferind informaț ii
despre elementul părinte căruia îi apartine
are asociat ă proprietatea [children]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
12/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Element
proprietatea [local name] desemnează numele localal elementului aparținând unui spațiu de nume indicat
via [namespace name]
prefixul spaț iului de nume utilizat este stocat de proprietatea [prefix]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
13/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Element
proprietatea [attributes] oferă lista neordonat ăa atributelor atașate
proprietatea [namespace attributes] specificălista neordonat ă a atributelor xmlns asociate
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
14/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Atribut (attribute)desemnează conceptul de atribut XML
numele și spaț iul de nume atașat sunt specificatede propriet ăț ile [local name] și [namespace name], respectiv
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
15/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Atribut (attribute)
elementul căruia îi aparț ine este indicat de proprietatea [owner element]
valoarea propriu-zisă a atributuluieste specificat ă de [normalized value]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
16/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Caractere (characters)corespund informaț iilor textuale
ale conț inuturilor elementelor XML
proprietatea [parent] indică elementul căruia îi aparț in
proprietatea [children] conț ine datele-caracter propriu-zise
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
17/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Caractere (characters)
setul de caractere utilizat este desemnat de proprietatea [character code]
modul de procesare a spaț iilor albe este specificat de proprietatea booleană [element content whitespace]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
18/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
Element
Characters
Attribute
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
19/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: concepte
Instrucț iuni de procesare( processing instruction information item)
Comentarii(comment information item)
Declaraț ia tipului de document (document type declaration item)
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
20/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xml-infoset: exemplu
Construcț iei
îi corespunde infoset -ul:
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
21/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
În ce mod pot fi accesate datele stocate
de un document XML?
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
22/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath
XPath 1.0
recomandare a Consorț iului Web (1999)
www.w3.org/TR/xpath
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
23/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath
XPath 1.0
adresează părț i dintr-un document XML
oferă facilit ăț i de bază pentru manipularea datelor(șiruri, numere,…)
operează la nivelul structurii abstractea documentelor XML (arborele)
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
24/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath
expresia XPath – construcț ie de bază
evaluarea se realizează în funcț ie de context:un nod al documentului XML
poziț ieo funcț ie (predefinită sau specificată de programator)
o declaraț ie a unui spaț iu de nume
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
25/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath
expresia XPath – construcț ie de bază
în urma evaluării expresiei, e oferit un obiect:o mulț ime de noduri (node-set )
o valoare logică – true/ falseun număr ( float )
un șir de caractere
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
26/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Descendent /
/html/body/article /cuprins/capitol/autor
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
27/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Traversare recursivă //
//capitol //cuprins
//div/a
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
28/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Traversare recursivă //
//capitol //cuprins
//div/a
Atenț ie la problemele de performanță!
De ce?
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
29/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Wildcard *
/cuprins/*/nume
capitol/*
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
30/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
evaluarea de expresii XPathvia extensia FirePath pentru Firefox
/html/body/*/section
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
31/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Nodul curent .
./capitol
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
32/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Atribut @
capitol/@nr
table/@*
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
33/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Spaț iu de nume :
svg:*
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
34/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Spaț iu de nume ://html:*
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
35/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Filtru/index [ ]
/cuprins/capitol[2]//li[@class = "presentation"]
forma generală: [expresie]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
36/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
6 noduri (de tip Element) care au ca valoarea atributului class șirul de caractere "presentation"
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
37/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
Pentru valori logice și numerice pot fi folosiț i
operatorii uzuali:or and = != = >+ - * div mod
comparaț iile de șiruri sunt case sensitive
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
38/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
furnizaț i semnificaț ia expresiei XPath: //*[@class="tools" or @class="presentation"]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
39/103
D r . S a b i n
B u r a g a
p r o f s .
i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – axe
Nodul curent (context node) self
Nodul părinte parent Nodurile copil childNodurile descendente descendant
Nodurile de tip atribut attributeNodurile spaț iilor de nume namespace
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
40/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – axe
Nodurile ascendente ancestor
Nodurile ascendenteori nodul curent ancestor-or-self
Nodurile descendenteori nodul curent descendant-or-self
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
41/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
//div/descendant::a //div/descendant::*
Ce valoare oferă fiecare expresie XPath?
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
42/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – axe
folosind axa preceding accesăm nodurile precedenteaici, instrumentul Web de testare disponibil la
http://www.xpathtester.com/xpath
expresia XPath /produse/produs/promo/preceding::*
oferă rezultatulPing Uinix
http://www.pinguin.info
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
43/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – sintaxa prescurtată
self .parent ..
attribute @namespace :
../nume
//child::*[@nr > 2]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
44/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – funcții
Noduri: id(), position(), count(), name(),namespace-uri(), last(), …
Tipuri de noduri: node(), text(), comment(),processing-instruction()
Șiruri: concat(), starts-with(), contains(), substring(),
string-length(), translate(), …Booleeni: not(), true(), false()Numere: sum(), round(), floor(), number(), …
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
45/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – funcții
count(//li[@class = "presentation"])
numărarea nodurilor ce satisfac o anumit ă condiț ie
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
46/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – funcții
count(//a[@href]) = count(//a)truetoate elementele includ atributul href
count(//li[@class]) = count(//li) falseexist ă elemente care nu au specificat atributul class
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
47/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – functii
furnizaț i semnificaț ia expresiei XPath: //nav/*/li[position() mod 2 = 1]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
48/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – functii
găsirea sub-nodurilor elementelor aflate pe ultimapoziț ie din primele liste neordonate: //ul[1]/li[last()]/*
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
49/103
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
50/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatoriCe efect are expresia XPath?
//nav/*/*[position()
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
51/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
//*[contains(text(), "XML")]furnizarea tuturor nodurilor care conț in șirul "XML"
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
52/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
precizaț i semnificaț ia expresiei XPath: //li[@class="presentation"]/*/a[@href]
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
53/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
furnizaț i semnificaț ia expresiei XPath – care-i diferenț a? //li[@class="presentation"]/*/a[@href]/text()
j l "S"
evaluarea expresiilor XPath
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
54/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – operatori
instrumentul xmllint (folosește LibXML)oferit de distribuțiile GNU/Linux + Mac OS X
xmllint projects-dtd.xml
--xpath "substring(/projects/project[1]/desc/text(), 4, 5)"
SuperUn super proiect pentru super studenti!
1http://super.info/
Super--Un proiect care nu e foarte super...2http://www.supermm.org/
pdirect în linia de comandă
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
55/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – utilizări pragmatice
Procesarea datelor XML
în conjuncție cu DOM (Document Object Model )ori alte metode de prelucrare
detalii încursul viitor
avansat
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
56/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s
a c o /
xsl: xpath – utilizări pragmatice
Transformarea documentelor XML în alte formate
în conjuncție cu XSL (Extensible Stylesheet Language)XSLT permite generarea de reprezentări
precum HTML, XML sau text obișnuit
XSL-FO facilitează crearea de obiecte de formatare învederea tipăririi – e.g., generarea de documente PDF
detalii în S. Buraga, Tehnologii XML:
www.slideshare.net/busaco/sabin-buraga-tehnologii-xml
avansat
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
57/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath – utilizări pragmatice
Interogarea documentelor XML
în conjuncție cu XQuery
context: servere de baze de datenative sau suport pentru XML
detalii în S. Buraga, Tehnologii XML:
www.slideshare.net/busaco/sabin-buraga-tehnologii-xml
de consultatsuplimentul
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
58/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath – programare
libxml (C, cu portări pentru alte limbaje;include și utilitarul xmllint )
http://xmlsoft.org/
lxml și py-dom-xpath – biblioteci Pythonhttp://lxml.de/
REXML (Ruby)modul XML cu suport și pentru XPath
SimpleXML – procesări cu XPath în PHP
http://php.net/manual/en/simplexmlelement.xpath.php
define ('FLUX', 'http://www.infoq.com/feed'); // adresa fluxului de știri RSSd fi ('XPATH' '/ / h l/it ') // i XP th tili tă
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
59/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath – programaredefine ('XPATH', ' /rss/channel/item'); // expresia XPath utilizată
// funcție ce generează o legătură HTML spre resursă, // oferind inclusiv descrierea ei
function genereazaLegatura ($url, $titlu, $dataPub = '', $desc = '') {return "
$titlu
($dataPub)
" . $desc . "";}
try {$xml = @simplexml_load_file (FLUX); // încărcăm documentul XML// baleiăm însemnările (aici, elementele din RSS)foreach ($xml->xpath (XPATH) as $stiri) {
echo genereazaLegatura ($stiri->link, $stiri->title,$stiri->pubDate, $stiri->description); }}catch (RuntimeException $e) {
echo $e->getMessage(); // a survenit o excepție
}
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
60/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath – programarerss version 2.0 xmlns:dc http://purl.org/dc/elements/1.1/
InfoQhttp://www.infoq.comInfoQ feed
Facebook Open Sources React Native, Yearand Network Class, Fresco and Nuclide
http://www.infoq.com/news/2015/03/react-native-fresco-nuclideFri, 27 Mar 2015 12:00:00 GMT
…
Social NetworkingProgrammingOpen Source
MobileDevelopmentAbel Avram2015-03-27T12:00:00Z
structura generală a unuiflux RSS poate fi studiată la
http://www.rssboard.org/
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
61/103
D r . S a b i
n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath – programare
un rezultat
al procesării
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
62/103
D r . S a b i
n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath – programare
xpath (JavaScript) – modul Node.jsde vizitat și https://nodejsmodules.org/tags/xpath
XML::XPath – modul Perlhttps://metacpan.org/release/XML-XPath
XPath API – diverse interfeț e de programare
oferite de Apache Xalan și Saxon pentru Java(vezi și javax.xml.xpath.XPath din cadrul JAXP)
hxt-xpath – Haskell XML Toolbox XPath
https://wiki.haskell.org/HXT
avansat
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
63/103
D r . S a b i
n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath
utilizarea obiectului $x oferit de consola browser -ului
Chrome sau Firefox pentru evaluarea expresiilor XPath
$x (" //p[@class='info']/*[1]/text()")
avansat
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
64/103
D r . S a b i
n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
xsl: xpath
Instrumente XPath – exemplificări:
FirePath, Firefinder – extensii Firebug pentru formulareade interogări XPath asupra documentelor Web
XPath Helper, Xpath Finder – extensii pentru Chrome
EXPath – iniț iativă de utilizare/creare de extensiipentru XPath: http://expath.org/
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
65/103
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
66/103
D r . S a b i
n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
Cum verificăm corectitudinea datelor XML?
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
67/103
D r . S a b i
n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
necesități
Dorim ca datele modelate via XML
să poat ă fi regăsite, reutilizate și partajateîntre aplicaț ii
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
68/103
D r . S a b i
n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
necesități
O cerință important ă este de a cunoaște:
elementele/atributele ce pot fi specificate+
modul lor de structuraree.g., ordinea, numărul minim/maxim de apariț ii,...
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
69/103
D r . S a b i
n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
necesități
O cerință important ă este de a cunoaște:
tipul conț inutului
exemplu: „atributul align poate avea valorile
mutual exclusive left, right, center ”
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
70/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
necesități
O cerință important ă este de a cunoaște:
ce poate fi considerat valid și ce reprezint ă eroare
exemplificare:
elementul are conț inut vid(nu va putea include alte elemente)
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
71/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u s a c o /
soluție
Grupuri de indivizi specifică vocabularul XML(setul de elemente/atribute permise)
și regulile de marcare – modelele structurale
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
72/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
soluție
Grupuri de indivizi specifică vocabularul XML(setul de elemente/atribute permise)
și regulile de marcare – modelele structurale
uzual, grupurile reprezint ă:o companie, o industrie, persoane împărt ășind
interese comune,dezvoltatori de instrumente de marcare,
un consorț iu/organizaț ie non-profit
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
73/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
soluție
Modelul structural se aplică unei clase de
documente XML, în vederea verificării– via un analizor (procesor, parser XML) –a corectitudinii instanț elor de documente
aparț inând acelei clase
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
74/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
soluție
Aspecte de interes:
numirea elementelor/atributelordefinirea regulilor de utilizare a acestora
specificarea structurii și conț inutuluidefinirea constrângerilor
oferirea unui set de convenț ii de numire
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
75/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
soluție
Apare necesitatea specificării
unui set de constrângeri asociate documentelorXML, astfel încât datele XML să fie verificatedaca sunt valide sau nu din punct de vedere
structural ori al tipului conț inutului
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
76/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
soluție
Modalit ăț ile de specificare a constrângerilor
se pot baza pe:descrieri
reguli
șabloane
avansat
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
77/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
soluție
Modalit ăț ile de specificare a constrângerilor
se pot baza pe:descrieri
„exist ă un element
având un atribut nume care are conț inutul...”
DTD, XML Schema
avansat
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
78/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
soluție
Modalit ăț ile de specificare a constrângerilor
se pot baza pe:reguli
„orice element va avea un atribut nume,
iar conț inutul acestui atribut se va conforma regulii...”
Schematrondetalii în S. Buraga, Tehnologii XML:
www.slideshare.net/busaco/sabin-buraga-tehnologii-xml
avansat
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
79/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
soluție
Modalit ăț ile de specificare a constrângerilor
se pot baza pe:șabloane – pattern-uri
„structura documentelor din clasa ‘utilizator’ trebuiesă se potrivească (match) conform următorului șablon...”
RELAX NGdetalii în S. Buraga, Tehnologii XML:
www.slideshare.net/busaco/sabin-buraga-tehnologii-xml
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
80/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
dtd
Tipuri de documente
Document Type Definition (DTD)specificare formală a tipurilor de documente
(constituienț i + structură)
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
81/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
dtd
Tipuri de documente
Document Type Definition (DTD)specificare formală a tipurilor de documente
(constituienț i + structură)
în spiritullimbajelor formale
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
82/103
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
83/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
dtd
Dacă DTD-ul lipsește, documentul trebuiesă respecte un număr minim de constrângeri
document bine formatat – well formed
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
84/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
dtd
Regulile sintactice de specificarea meta-elementelor DTD provin de la SGML
DTD-ul poate exprima structura conț inutului,indicatorii de apariț ie, conectorii
detalii: http://www.w3.org/TR/REC-xml
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
85/103
D r . S a b i n
B u r a g a
p r o f s
. i n f o . u a i c . r o / ~ b u
s a c o /
dtd
Un DTD specifică un tip de document:
d d
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
86/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd
Un DTD specifică un tip de document:
exemplu:lista proiectelor
d d l
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
87/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: elemente
conținut (neterm. & term.)#PCDATA, EMPTY, ANY
* + ? indicatori de apariție, | conectori
meta-element
nume deelement
(neterminal)
d d l
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
88/103
D r . S a b i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: elemente
Conț inutul unui element poate fi:șir de caractere (#PCDATA – parsed character data)
vid (EMPTY )
orice alt marcaj/șir de caractere ( ANY )
d d l
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
89/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: elemente
Un element poate apărea:
o singură dat ă – numele elementului
de oricâte ori, inclusiv niciodat ă (*)
macăr o dat ă (+)
de zero sau unu ori (?)
d d l
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
90/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: elemente
Ordinea apariț iei elementelor:
secvență (,)
alternativă (|)
dtd t ib t
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
91/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: atribute
>
class (A | B | C) "A">
t ipul conținutuluiCDATA, ID, ENTITY ,...enumerare de valori
elementul căruia
îi este asociat
mod de apariție#REQUIRED
#IMPLIED#FIXED
dtd t ib t
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
92/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: atribute
Conț inutul unui atribut poate fi:
șir de caractere (CDATA – character data)
identificator unic (ID)
referință la un identificator (IDREF)referință la o entitate (ENTITY )
enumerare de valori
dtd t ib t
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
93/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: atribute
Un atribut poate fi declarat să apară:
obligatoriu (#REQUIRED)
opț ional (#IMPLIED)
fix – se folosește o valoare a-priori specificat ă(#FIXED)
id ID #IMPLIED
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
94/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
id ID #IMPLIEDxmlns CDATA #FIXED 'http://www.w3.org/1999/xhtml'>
src CDATA #REQUIREDalt CDATA #REQUIREDheight CDATA #IMPLIED
width CDATA #IMPLIED>
…
fragment din DTD-ulspecificând gramatica
limbajului HTML
dtd lid
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
95/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: validare
O instanță de document trebuie să aibă atașat ăo declaraț ie a tipului căruia îi aparț ine:
dtd lid
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
96/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: validare
Validarea documentului se realizeazăprin intermediul unui analizor – procesor, parser – XML
(Apache Xerces, libxml, MSXML etc.)sau utilitar
(exemple: OpenSP, , xmllint ,…)
dtd lid
Super
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
97/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: validare
validarea unui document XML cu utilitarul xmllint
Super
Un super proiect!
1
http://www.super.ro/
> xmllint projects-dtd.xml --validprojects-dtd.xml:32: element project: validity error :Value "D" for attribute class of project is not amongthe enumerated set
^projects-dtd.xml:36: element stud: validity error :No declaration for attribute atribut of element stud
1^
projects-dtd.xml:38: element project: validity error :Element project content does not follow the DTD,expecting (title , desc? , stud , url?),
got (title title desc stud url )
^
de studiat hi
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
98/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
&busaco;…
arhivaexemplelor
dtd: alidare
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
99/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: validare
validarea unui document XML via XML Editor
pe baza Apache Xerces
dtd: validare
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
100/103
D r . S a b
i n
B u r a g a
p r o f s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: validare
raportarea erorilor de validare în Visual Studiorecurgând la MSXML
https://msdn.microsoft.com/en-us/library/ms763742.aspx
dtd: validare
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
101/103
D r . S a b
i n
B u r a g a
p r o f
s . i n f o . u a i c . r o / ~ b u
s a c o /
dtd: validare
validarea paginilor Web pe baza DTD-urilorcorespunzătoare versiunilor HTML: 3.2, 4.01, 5,…
validator.w3.org
t
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
102/103
D r . S a b
i n
B u r a g a
p r o f
s . i n f o . u a i c . r o / ~ b u
s a c o /
rezumat
extragerea și validarea datelor XML
//*limbajul XPath definirea tipurilor de documente
-
8/19/2019 Web07ModelareXML XPath ValidariXML DTD
103/103
D r . S a b
i n
B u r a g a
p r o f
s . i n f o . u a i c . r o / ~ b u
s a c o /
episodul viitor: prezentarea proiectuluiîn cadrul orelor de laborator (11—15 aprilie 2016)