Web - XSLT 2

Preview:

Citation preview

Dr. Sabin Buraga http://www.infoiasi.ro/~busaco/

TehnologiiTehnologii WebWeb <?xml version=“1.0” ?><curs desc=“…” />

Tehnologii Web

Dr. Sabin­Corneliu 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(following­sibling, preceding­sibling,...)

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 (node­sets)

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 tip­returnat

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=“…” />

??

Recommended