Upload
sabin-buraga
View
645
Download
1
Embed Size (px)
Citation preview
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 III: Transformari XML (2)
Detalii in [TX, 87‐102]
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
“Faceti ceva si daca nu merge incercati altceva.”
Franklin Delano Roosevelt
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)
EXSLT, XSL‐FO, XPath 2.0, XSLT 2.0
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
EXSLT (Extensions to XSLT)Scop: module (extensii) ale XSLT,oferind functionalitati suplimentare
Implementarile EXSLT pot fi realizatedirect in XSLT sau in alte limbaje
Detalii lawww.exslt.org
exslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Procesoare XSLT care implementeaza EXSLT:
libXSLT – C, Perl, PHP5, Python, Ruby,...Saxon – Java, .NETXalan – C++, Java
exslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Extensiile sunt modularizate:Common – functionalitati comuneMath – facilitati pentru calcule matematiceSets – lucru cu multimiStrings – operatii cu siruri de caractereDates & Times – lucru cu date calendaristiceRegexps – suport pentru expresii regulate Functions – suport pentru definirea de functiiDynamic – evaluare dinamica a sirurilorcontinind expresii XPath
Random – suport pentru numere aleatoare
exslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pentru a folosi un modul EXSLTintr‐un document XSLT,
se va recurge la spatiile de nume corespunzatoare:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns:sets="http://exslt.org/sets">
...</xsl:stylesheet>
exslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
In vederea prevenirii includerii elementelorcorespunzatoare spatiilor de nume EXSLT
in arborele generat la iesire,se va utiliza constructia
exclude-result-prefixes
exslt
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Spatiul de nume: http://exslt.org/mathFunctii de baza:
math:min, math:max, math:highest, math:lowestFunctii suplimentare:
math:abs, math:sqrt, math:power, math:log, math:exp, math:random, math:sin, math:cos, math:tan, math:asin, math:acos, math:atan etc.
exslt: modulul Math
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Spatiul de nume: http://exslt.org/setsFunctii de baza:
sets:difference, sets:intersection, sets:distinct, sets:has-same-node, sets:leading, sets:trailing
exslt: modulul Sets
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Spatiul de nume: http://exslt.org/stringsFunctii de baza:
str:tokenize, str:replace, str:concat, str:split, str:align, str:encode-uri, str:decode-uri,...
exslt: modulul Strings
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Spatiul de nume: http://exslt.org/dates‐and‐times
Functii de baza: date:date-time, date:date, date:time, date:year, date:month-in-year, date:month, date:day-name, date:hour-in-day, date:minute-in-hour,...
Functii suplimentare: date:format-date, date:add, date:sum, date:difference, date:seconds etc.
exslt: modulul Dates & Times
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Spatiul de nume: http://exslt.org/regular‐expressions
Functii de baza: regexp:test, regexp:match, regexp:replace
exslt: modulul Regular Expressions
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
!!
exsl: demo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XML (Extensible Markup Language)Formatari XSL‐FO
(Extensible Stylesheet Language Formatting Objects)
CaracterizareInginerie
Concepte & elemente de bazaProcesoare
cuprins
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Scop: oferirea de facilitati de formatare avansataa continutului documentelor XML
(e.g., in vederea tipaririiconform standardelor industriale in vigoare)
Se poate utiliza in conjunctie cu XSLT
Standard al Consortiului Web: www.w3.org/TR/xsl/
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Dat fiind un arbore de noduri XML, via XSL‐FO se pot atasa proprietati de formatarepaginata – conform unui mediu de redare –,
astfel incit infoset‐ul rezultat sa poata fi prezentatutilizatorului pe ecranul unui dispozitiv(PC, handheld,...) ori listat pe hirtie
(in diverse formate: carte, brosura, catalog,...)
xsl‐fo: procesare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Acest proces este divizat in operatiile de:transformare (realizata de XSL Transformer) si
formatare (efectuata de XSL Formatter)
Nu este obligatoriu ca transformareasa fie proces separat de cel de formatare
xsl‐fo: procesare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Cunoasterea structurii documentului oridocumentelor XML de intrare
Specificarea unei/unor forme de redare(afisare, listare,...) si a unui format dorit(XHTML, SVG, PDF, Postscript,...)
Selectarea obiectelor de formatarein concordanta cu modul de redare dorit
Reutilizarea/conceperea documentelor XSLOptimizarea foilor de stiluri XSL folositeCompilarea foilor de stiluri concepute
xsl‐fo: inginerie (metodologie de lucru)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
DocumentRezultatul final obtinut in urma formatariiDivizat, din punct de vedere logic, in 3 parti majore:Front matter – pagina de titlu, dedicatie, prefata, cuprins, lista figurilor etc.(parte tipica pentru o carte)Main matter (corpul) – obligatoriuBack matter – index, glosar, bibliografie, colofon,... (parte tipica pentru o carte)
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Aranjament (layout)Corespunzator unui set de paginiFoloseste sabloane de pagina (page template)
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Fluxul paginarii (page flow)Proces de generare a fiecarei pagini, in functie de aranjament, de mediul de redaresi de clasa de document
Are loc conform proprietatilor de formatarespecificate via obiecte de formatare(formatting objects) atasate continutului XML via foaia de stiluri XSL
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pagina – divizata in zone de interes: Partea superioara (before) in general, destinata anteturilor
Partea inferioara (after) uzual, destinata pentru subsoluri
Partea de inceput (start) in mod normal, partea stinga a paginii
Partea de final (end) in mod obisnuit, partea dreapta a paginii
Corpul propriu‐zis (body)
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
xsl‐fo: concepte
PaginaPoate fi redata conform unei orientari(e.g., 90% pentru a se genera o pagina landscape)
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
ContinutReprezinta informatia din care este “umpluta” o secventa de pagina
Poate fi considerat static (folosit pentru zonelediferite de corpul paginii) sau de tip flux – flow (apare in corpul paginii)
Este compus din arii (areas) de informatii
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Arie (area)Descrie structura spatiala a informatiei redate
Poate fi generata de 0, 1 sau mai multe obiectede formatare
Ocupa o zona dreptunghiularain cadrul mediului de redare
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Arie (area)De tip inline – apare in cadrul unui bloc (block)de informatii, avind asociate proprietati ce stabilesclocal modul de redare a continutului
Exemple: imagine precedind un titlu, fragment de text redat ingrosat etc.
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Arie (area)De tip block – desemneaza informatii separate de reguli de formatare, fiind constituita din ariide tip inline
Exemple: paragrafe, tabele, liste numerotate,...
xsl‐fo: concepte
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Proprietatile de formatare se bazeaza pe celespecificate de CSS; in plus, sunt definite modalitatimai sofisticate de formatare – e.g., generarea delegaturi, de cuprinsuri, de referinte incrucisate, de paginari si spatieri conditionate etc.
Unitatile de masura sunt aceleasi celor de la CSS(cm, mm, in, px, pt, pc, em)
Valorile pot fi absolute ori relative
xsl‐fo: mod de formatare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Rezultatul formatarii depinde, de cele mai multe ori, de procesorul XSL‐FO utilizat
Formatele de redare uzuale:PDF (Portable Document Format)
PostscriptRTF (Rich Text Format)
xsl‐fo: mod de formatare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Elementele XSL‐FO trebuie sa apartina spatiuluide nume indicat de URI‐ul
http://www.w3.org/1999/XSL/Format
Un document XSL‐FO are ca element radacina<fo:root>
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Aranjamentul paginilor este determinatde <fo:layout-master-set>
Fiecare secventa de pagini va fi definitaprintr‐un <fo:page-sequence> care va specifica
si modul de generare a continutului:<fo:flow> si <fo:static-content>
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Proprietatile generale ale paginii se definescprin elementul <fo:simple-page-master>, iar zonele de pagina via <fo:region-body>,
<fo:region-before>, <fo:region-after> etc.
Ariile de tip bloc se specifica prin <fo:block>, iar cele inline cu <fo:inline>
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Continuturile tabelare se includ cu elementele<fo:table>, <fo:table-column>, <fo:table-row>,
<fo:table-cell>, <fo:table-caption>,...
Continuturile grafice se insereazavia elementul <fo:external-graphics />
<fo:external-graphic content-height="1cm" content-width="2cm" src="url(images/csb.png)" />
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Continuturile de tip lista se specificaprin <fo:list-item>, <fo:list-item-label>,
<fo:list-item-body>
Legaturile hipertext pot fi definite via <fo:basic-link>
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Notele de subsol se exprimaprin <fo:footnote> si <fo:footnote-body>
Specificarea de proprietati de formatarela nivel de caracter – e.g., pentru generarealetrinelor – se face prin <fo:character />
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Alte tipuri de continuturi (e.g., SVG) pot fi inclusecu <fo:instream-foreign-object />
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Proprietatile de formatare se specificaprin atribute atasate unor elemente de interes
ca <fo:block> ori <fo:inline>
<fo:block font-size="12pt" font-family="sans-serif" line-height="15pt" text-align="justify">Web</fo:block>
<fo:inline>Vezi remarca <fo:character character="1" baseline-shift="super" font-family="'Arial Narrow'" />
</fo:inline>
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Antenna House Formatter: www.antennahouse.com
Apache FOP (Java): xml.apache.org/fop
Formatting Objects Authoring (Java): foa.sf.net
jfor – Java XSL‐FO to RTF: www.jfor.org
RenderX XEP (Java): www.renderx.com
xsl‐fo: procesoare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
XSL 1.1Standardizat recent de W3C (2007)http://www.w3.org/TR/xsl11/ Noutati:
Posibilitatea de a specifica bookmark‐uriPosibilitatea de a preciza flow‐uri multipleAparitia unor constructii noi privitoarela paginare
Scalarea conditionata a continutului graficNumerele de pagina pot avea precizateun prefix si/sau un sufix
Si altele...
xsl‐fo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
!!
xsl‐fo: demo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
intrebare
Care este prezentul/viitorultransformarilor XML?
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Recomandare W3C (2007)
Baza pentru XSLT 2.0 si XQuery 1.0
http://www.w3.org/TR/xpath20/
xpath 2.0
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Opereaza asupra unei structuri logice (abstracte) a documentului XML numita data model:www.w3.org/TR/xpath-datamodel/
Tipurile de date sunt cele specificatede XML Schema
Traversarea documentelor poate utiliza axe noi(followingsibling, precedingsibling,...)
xpath 2.0: noutati
Vezi cursulviitor
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Secvente ordonate in loc de seturi de noduri (nodesets)
Secventele pot contine duplicate, dar nu pot fi formatedin sub‐secvente
Se permite si specificarea intervalelor(considerate tot secvente): (8, 10, 1 to 4)
Relativ la secventele de noduri, apar noii operatori union (|), intersect si except
xpath 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Operatorul idiv ofera un rezultat intreg
Comparatiile generale se pot face via =, !=, <, <=, >, >=, iar cele asupra valorilor atomice prin eq, ne, lt, le, gt,respectiv ge
Pentru iterare de secvente, se poate folosi expresia for
for $i in (10, 20), $j in (1, 2)return ($i + $j)
xpath 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Expresiile conditionale pot fi exprimate prin if
if (catalog[@stare = ‘final’]) then student/nota else student/prezente
xpath 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Se permit expresiile cuantificate(precedate de cuantificatorii some ori every)
some $x in (1, 2, 3), $y in (2, 3, 4) satisfies $x + $y = 4
every $x in (1, 2, 3), $y in (2, 3, 4) satisfies $x + $y = 4
xpath 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Pot fi utilizate noi functii specificate dehttp://www.w3.org/TR/xpath-functions/
Apartin spatiului de nume fn desemnat de URI‐ul: http://www.w3.org/2005/xpath-functions
Signatura unei functii este definita prinfn:nume ($parametru as tip, ...) as tipreturnat
E.g.: error() trace() upper-case() lower-case() iri-to-uri() encode-for-uri() root() zero-or-one() one-of-more() exactly-one() avg() min() max() doc() doc-available() etc.
xpath 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Si multe altele…
xpath 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Recomandare W3C (2007)
http://www.w3.org/TR/xslt20/
Foloseste XPath 2.0
xslt 2.0
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Parcurgerea grupurilor de nodurivia constructia <xsl:for‐each‐group>
Specificarea de functii definite de utilizator
Crearea de arbori multipli la iesire(reprezentari multiple ale transformarilor)
Declaratii de tipuri pentru variabile/parametri
xslt 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
<xsl:for‐each> poate procesa orice secventade valori (nu doar de noduri)
Criteriul de sortare poate fi specificat de o functie‐utilizator – o secventa sortata poate figenerata cu <xsl:perform‐sort>
Aparitia de functii noi – e.g., formatarea datei
Crearea de noduri de tip spatiu de numevia <xsl:namespace>
xslt 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Si multe altele…
xslt 2.0: noutati
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
Aplicatia de referinta:
Saxon (Java, C#):http://saxon.sourceforge.net/
xslt 2.0: procesoare
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
!!
xslt 2.0: demo
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
rezumat
Transformari XSL:EXSLT, XSL‐FO, XPath 2.0 + XSLT 2.0
Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/
TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />
??