Upload
sabin-buraga
View
1.110
Download
0
Embed Size (px)
DESCRIPTION
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 II: Transformari XML
Detalii in [TX, 52‐87]
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
“Lemn bun, lemn rau, aceeasi cenusa. Dar nu aceeasi flacara!”
Nicolae Iorga
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML (Extensible Markup Language)Infoset (XML Information Set)
Transformari XSL (Extensible Stylesheet Language)
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
intrebare
Cum modelam (reprezentam) datele?
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Scop: Specificarea unui model de date (abstract)
pentru XML
recomandareW3C, 2004
http://www.w3.org/TR/xmlinfoset
xml‐infoset
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Se ofera un punct de vedere comun referitor la:serializarea datelor semi‐structurateconstruirea/folosirea de API‐uri de procesare XMLdefinirea unor specificatii de nivel (mai) inalt,precum XPath, XSLT sau XML Schema
xml‐infoset
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Modelul asigura inter‐operabilitatea diferitelortehnologii, interfete de programare (API‐uri)
si aplicatii XML
xml‐infoset
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Document (document information item)Considerat a fi un arbore, cu radacina data de proprietatea [document element]
Poseda proprietatea [children] oferindo lista de “lucruri” (items), in ordinea data de algoritmul DFS
xml‐infoset: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
ElementSpecifica un element XML
Poseda o proprietate [parent] continindinformatii despre elementul parintecaruia ii apartine
Are asociata proprietatea [children]cu semantica de mai sus
xml‐infoset: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
ElementProprietatea [local name] desemneaza numele local al elementului al carui scop este dat de [namespace name] ce indica URI‐ul spatiului de numefolosit – vid daca nu se specifica spatii de nume
Prefixul spatiului de nume utilizat este stocatde proprietatea [prefix]
xml‐infoset: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
ElementProprietatea [attributes] ofera lista neordonataa atributelor atasate
Proprietatea [namespace attributes] specificalista neordonata a atributelor xmlns asociate
xml‐infoset: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Atribut (attribute)Desemneaza conceptul de atribut XML
Numele si spatiul de nume atasat sunt specificatede proprietatile [local name] si [namespace name],respectiv
xml‐infoset: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Atribut (attribute)Elementul caruia ii apartine este indicatde proprietatea [owner element]
Valoarea propriu‐zisa a atributului este specificatade [normalized value]
xml‐infoset: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Caractere (characters)Corespund informatiilor textuale ale continuturilorelementelor XML
Proprietatea [parent] indica elementul caruiaii apartin
Proprietatea [children] contine datele‐caracterpropriu‐zise
xml‐infoset: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Caractere (characters)Setul de caractere utilizat este desemnatde proprietatea [character code]
Modul de procesare a spatiilor albe este specificatde proprietatea booleana [element content whitespace]
xml‐infoset: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Instructiuni de procesare(processing instruction information item)
Comentarii (comment information item)
Declaratia tipului de document (document type declaration item)
xml‐infoset: concepte
Vezi cursurileviitoare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
xml‐infoset: exemplu
Constructiei<antologie xmlns="http://www.infoiasi.ro/antologii" coordonator="Sabin Buraga" /> ii corespunde infoset‐ul:
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Fast Infoset – alternativaScop: specificarea unui format binar pentru InfosetBeneficii:
(De)serializare si procesare mai rapideDimensiuni mai mici ale datelor XML
Sunt suportate tipurile specificate de XML Infoset
Se ofera, suplimentar, octet information item sidiverse metode de indexare a tablourilor de date
xml‐infoset
avansatavansat
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML (Extensible Markup Language)Transformari XSL (Extensible Stylesheet Language)
CaracterizareLimbajul XPathLimbajul XSLT
Procesoare & aplicatiiExemple
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Un document XML separa continutulde maniera de formatare/procesare
Pentru a prezenta utilizatorului datele XML, trebuie specificata o modalitate de redare(asa‐numita foaie de stiluri – stylesheet)
xsl: preliminarii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Solutii:CSS (Cascading Style Sheets)
Sintaxa non‐XML, flexibilitate limitata, nu exista context
XSL (Extensible Stylesheet Language)Sintaxa XML, o mai buna flexibilitate, procesare in functie de context, se pot opera modificari de structura XML,...
xsl: preliminarii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Strategii:1 foaie de stiluri, N documente
Se mentine consistenta formatului (“look & feel”)pentru documente multiple
Usor de dezvoltat, aplicat si controlat (“in house style”)
xsl: preliminarii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Strategii:N foi de stiluri, 1 document
Formatari diferite in functie de mediile de redare(ecran, imprimanta,...) sau de preferinte (e.g., skin‐uri)
Usor de produs documente derivate (interogari “slabe”):selectii, sumarizari, indexari, catalogari,...
xsl: preliminarii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Transformarea structurii si/sau continutuluidocumentelor XML
Rescrierea documentelor XMLdocumente XML/HTML sau alte formate
Inspirat din DSSSL (Document Style Semantics and Specification Language) folosit pentru SGML
xsl: scopuri
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Foloseste XPath si XSLT
XSL ≡ limbaj descriptiv bazat pe reguli,orientat‐eveniment
detalii: www.w3.org/Style/
xsl
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XSL‐FOAtasarea de proprietati de formatare vizuala
a continutului documentelor XML Creare de constructii/macro‐uri de formatare
Suport pentru internationalizarePublicare independenta de medii
xsl
Detalii in cursul viitor
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
xsl
Transformarea continutului XML
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Document XML ≡ arbore de noduri
Tipuri de noduri: Radacina, Elemente, Text, Atribute,
Spatii de nume, Instructiuni de procesare, Comentarii
xsl
vezi siXML Infoset
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Reguli compuse din pattern (model) + actiunemodelul este exprimat in Xpathactiunea este specificata in XSLT
Transformarile se aplica recursiv tuturor nodurilor XMLcare satisfac sabloanele de reguli (patternmatching)
xsl
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XPath 1.0recomandare a Consortiului Web (1999)
http://www.w3.org/TR/xpath
Adreseaza parti dintr‐un document XMLOfera facilitati de baza pentru manipularea datelor
(siruri, numere,…)Opereaza la nivelul structurii abstracte
a documentelor XML (arborele)
xsl: xpath
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
expresia XPath – constructie de baza
evaluarea se realizeaza in functie de context:un nod al documentului XML
pozitieo functie de biblioteca
o declaratie a unui spatiu de nume
xsl: xpath
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
expresia XPath – constructie de baza
in urma evaluarii expresiei, e returnat un obiect:o multime de noduri (nodeset)o valoare logica (true, false)
un numar (float)un sir de caractere
xsl: xpath
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Descendent /
xsl: xpath – operatori
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Traversare recursiva //
//capitol//cuprins
xsl: xpath – operatori
Atentie la problemele de performanta!
De ce?
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Wildcard *
/cuprins/*/nume
capitol/*
xsl: xpath – operatori
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Nodul curent .
./capitol
xsl: xpath – operatori
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Atribut@
capitol/@nr
table/@*
xsl: xpath – operatori
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Spatiu de nume :
xsl:*
xsl: xpath – operatori
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Spatiu de nume ://html:*
xsl: xpath – operatori
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Filtru/index [ ]
xsl: xpath – operatori
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru booleeni si numere pot fi folositioperatorii uzuali:
or and = != <= < >= >+ ‐ * div mod
comparatiile de siruri sunt case sensitive!
//capitol[@id="1" or @id="5"]
xsl: xpath – operatori
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Axa nodului curent (context node): selfAxa nodului parinte: parentAxa nodurilor copil: childAxa nodurilor descendente: descendentAxa nodurilor de tip atribut: attributeAxa nodurilor spatiilor de nume: namespace
xsl: xpath – axe
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Nodurile ascendente: ancestor
Nodurile ascendente ori nodul curent: ancestor‐or‐self
Nodurile descendente ori nodul curent: descendent‐or‐self
xsl: xpath – axe
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
self ≡ .parent ≡ .. attribute ≡@namespace ≡ :
../nume//child::*[@nr > 2]
xsl: xpath – sintaxa prescurtata
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Noduri: id(), position(), count(), name(),namespace-uri(), last(), …
Tipuri de noduri: node(), text(), comment(), processing-instruction()
Siruri: concat(), starts-with(), contains(), substring(), string-length(), translate(), …
Booleeni: not(), true(), false()Numere: sum(), round(), floor(), number(), …
xsl: xpath – functii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XSLT (XSL Transformations) 1.0recomandare a Consortiului Web (1999)
http://www.w3.org/TR/xslt
transforma documentele XMLin alte tipuri de continut (XML, HTML, text etc.)
xsl: xslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XSLT (XSL Transformations) 1.0gindit pentru a fi parte din XSL (XSL ≡ XSLT + XSL‐FO)
http://www.w3.org/TR/xslhttp://www.w3.org/TR/xmlstylesheet/
poate fi utilizat independent de XSL
xsl: xslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru a putea fi folosite, constructiile XSLTtrebuie sa apartina spatiului de nume
desemnat de URI‐ul:http://www.w3.org/1999/XSL/Transform
xsl: xslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
O foaie de stiluri XSLT are drept element radacina<xsl:stylesheet> sau <xsl:transform>
Include sabloane de transformare,macar un sablon la nivelul radacina
xsl: xslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru transformare, se utilizeazaexpresii XPath folosite la:selectarea nodurilor dorite a fi procesatespecificarea conditiilor de procesaregenerarea textului de iesire
xsl: xslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
O lista de noduri sursa este procesatapentru a genera un fragment de arbore
de noduri destinatie (output)
Initial se proceseaza nodul radacina, la care se insereazanoduri copil generate de sabloane aplicate unei listede noduri selectate (recursiv) prin patternmatching
– via expresii XPath
xsl: xslt – model de procesare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Reguli de aplicare XSLTRegulile sabloanelor identifica noduri asupracarora se vor aplica transformari
Selectarea nodurilor se face prin XPathUn sablon se defineste prin elementul <xsl:template>Aplicarea unui sablon se realizeazavia <xsl:apply‐templates>
xsl: xslt – model de procesare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Crearea arborelui de iesireIntr‐un sablon, orice elemente ce nu apartin spatiuluide nume XSLT sunt copiate – fara a fi operate modificari – in arborele de iesire
Pot fi generate si alte tipuri de noduri: <xsl:element>, <xsl:attribute>, <xsl:text>, <xsl:comment> etc.
Extragerea unor valori se face via <xsl:value‐of>Controlul iesirii: <xsl:output>
xsl: xslt – model de procesare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
xsl: xslt – model de procesare
Transformarea unui doc. XML, folosind un procesor XSLT:
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Programe XSLT Constructii repetitive: <xsl:for‐each>Constructii de test: <xsl:if>, <xsl:choose>, <xsl:when>, <xsl:otherwise>
Copierea nodurilor: <xsl:copy>, <xsl:copy‐of>Sortarea nodurilor: <xsl:sort>Includerea de alte foi de stiluri: <xsl:include>Variabile si parametri: <xsl:variable>, <xsl:param>
xsl: xslt – model de procesare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Remarci:Variabilele – declarate cu <xsl:variable> – au valoriimutabile (valoarea asociata nu se schimbadin moment ce a fost evaluata)
<xsl:variable name="varsta" select="21 + 12" />
xsl: xslt – model de procesare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Remarci:Parametrii – declarati prin <xsl:param> – isi potmodifica ulterior valoarea
Apelarea (invocarea) unui sablon se poate realizacu pasarea de valori ale parametrilorvia <xsl:with‐param>
xsl: xslt – model de procesare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Nodul curent: current()Adreseaza alt document XML: document()Verifica existenta unei functii: function-available()Formateaza valori numerice: format-number()Ofera informatii despre procesorul XSLT:
system-property()
xsl: xslt – functii
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Apache Cocoon & Xalan (Xerces) – C, C++, Perl, Java: http://xml.apache.org/
libxslt (C/C++): http://xmlsoft.org/XSLT/Oracle‐JSablotron (C): http://www.gingerall.org/
Perl (modulul XML::Sablotron)Saxon (Java): http://saxon.sourceforge.net/MSXML – invocare prin COM (ActiveX)
xsl: xslt – procesoare (api‐uri)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
.NET Framework + managed languages: XslTransform (1.1), XslCompiledTransform (2.0) din spatiul de nume System.Xml
TrAX (parte din JAXP): http://java.sun.com/XML::XSLT (modul Perl): http://www.cpan.org/
Suport, uneori limitat, in cadrul actualelornavigatoare (clienti) Web – via JavaScript
xsl: xslt – procesoare (api‐uri)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Adobe Help Center – sistem de ajutorApache AxKit – mediu de publicare a datelor XML implementat in Perl: http://xml.apache.org/
Apache Forrest – mediu de dezvoltare de situri Web: http://xml.apache.org/
MS InfoPath – editor/procesor de formulareOpen Office – suita de birou<oXygen /> – editor/depanator XSLTXSLT Debugger – depanator XSLT (in KDE)
xsl: xslt – aplicatii (exemple)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
!!
xsl: demo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
rezumat
Extensible Markup Language (XML)
XML Infoset
Transformari XML:punerea problemei, limbajele XPath si XSLT
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
??