0
XSL-T    Eidon School
Agenda Introduzione e richiami formali Più in dettaglio Esempi Esercitazione l’aiuto del parser e browser PAUSA Eser...
Cos’è XSL-T Raccomandazione del W3C (la 1.0 novembre  1999, 2.0 gennaio 2007) È un linguaggio XML che Trasforma un  docu...
Fonte: w3.org   XSL
Il nostro file di esempio    Root Element /                                         Root Node    Document Elem    <?xml ve...
Un file XSL-T “nudoecrudo.xslt”<?xml version="1.0"?><xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/T...
DEMOApplichiamo al nostro xml    l’xslt appena vistojava AccessXSLTC -IN Elenco.xml -XSL           nudoecrudo.xslt
Risultato<?xml version="1.0" encoding="UTF-8"?  >Mercato di testGiovedi 18 dicembre 2003  16.05.295Miami American  CafeIT0...
L’elaborazione di XSL-T1. Legge il foglio di stile XSL-T2. Legge il documento XML in input3. Costruisce in output un docum...
Il template <xsl:template match="anagrafica"><html>… Al macthing tra il nodo corrente e l’attributo  match viene applica...
Il template di default<xsl:template match="*|/">   <xsl:apply-templates/></xsl:template><xsl:template match="text( )|@*"> ...
Un esempio semplice<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet  xmlns:xsl="http://www.w3.org/1999/XSL/Tran  sfor...
XSL-T: xsl:value-of… <h1><xsl:value-of select=“XPathExpression"/></h1> ... Potete immaginare già a cosa serva... Recupera ...
XSL-T: xsl:value-of<xsl:value-of select="3"/><xsl:value-of select="1 + 2"/><xsl:value-of select="@price + @tax"/><xsl:valu...
XSL-T: xsl:for-each <xsl:for-each select=“record">     … </xsl:for-each> Anche qui non è difficile capire significato: per...
XSLT: xsl:sortAll’interno di un ciclo xsl:for-each ordina la  sequenza degli elementi, è possibile  utilizzarne anche più ...
XSL-T: xsl:attribute<a onclick=“<xsl:value-of select="@name"/>”>  <img hspace="0“ src="img.gif“ border="0">  <xsl:attribut...
XSL-T: xsl:if<xsl:if test="js:IsEan(string(@ITEM_NO))">  <fo:instream-foreign-object width="28mm"  height="8mm">  <svg:svg...
XSL-T: xsl:choose<xsl:choose>    <xsl:when test="trasporto = D">           <fo:block text-align="center">Destinatario</fo:...
XSL-T: xsl:textPreserva il testo contenuto per riportarlo inoutput senza variazioni sugli spazi:<xsl:text disable-output-e...
XSL-T: xsl:decimal-formatDeve essere figlio di xsl:stylesheet. Definiscequali sono i caratteri speciali utilizzati dallafu...
XSL-T: format-number()<xsl:value-of select="format-number( 1 div0 ,€ ###,00, euro)"/>Parametri:       1) Il valore/xpath d...
XSL-T: altri elementi comuni xsl:copy xsl:variable xsl:comment xsl:preserve-space xsl:element xsl:apply-templates x...
XSL-T: funzioni   current()   document()   format-number()   function-available()   element-available()+ naturalmente...
ESERCITAZIONI
OrdinaleModificando il file Elenco.xslt, inserire una prima colonna con l’ordinale.Suggerimento:  position()
Soluzione… <tr>     <th>Num</th>     <th>…… <td>     <xsl:value-of select="position( )"/> </td>…
E..Non voglio un numero arabo ma un numero romano….Suggerimento:xsl:number e position()
Soluzione…<td>  <xsl:number level="single" format="I"                value="position()"/></td>…
Stringhe …Se la partita iva inizia con “IT…” il testo della stessa  deve essere in italico:Suggerimento: xsl:if e funzione...
Soluzione…<td>  <xsl:if test="starts-with(codice_fiscale, IT)">      <xsl:attribute name="style">             font-style:i...
Ordinare i recordModificando il file Elenco.xslt, far rendeizzare i record ordinati per codice_client discendenteSuggerime...
Soluzione…</tr>  <xsl:for-each select="record">      <xsl:sort select="codice_cliente"                  order="descending"...
Avere un effetto di bgcolor simile a:Suggerimento: xsl:attribute, xsl:choose,  position() e bgcolor(html)
Soluzione…<tr>   <xsl:attribute name="bgcolor">       <xsl:choose>   <xsl:when test="position( ) mod 2">Silver</xsl:when> ...
Inserire il totale dei prodotti Suggerimento: xsl:value-of e sum()
Soluzione…          </table>     <h2>Totale prodotti <xsl:value-of select="sum(record/num_prodotti)"></xsl:valu e-of></h2>...
Aggiungere e formattare il numero deiprodottiSuggerimento: xsl:decimal-format e format-          number()
Soluzione<xsl:decimal-format name="euro" decimal-  separator="," grouping-separator="."/>…  <td>      <xsl:value-of select...
Inserire uno spazio tra 007 e Mercato
Soluzione…nt><xsl:text> </xsl:text><xsl:value-of s…
ESERCIZZZZIIIOOONEEEEQueste pagine sono fatte con questatecnologia:http://atcasa.corriere.it/Outlet-Co/outlet_campania.sht...
Riferimentihttp://www.w3.org/TR/xslt/http://xmlsoft.org/http://www.slideshare.net/yht4ever/xpath-xml-path-lahttp://www.cs....
Upcoming SlideShare
Loading in...5
×

XSLT

613

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
613
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
33
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "XSLT "

  1. 1. XSL-T Eidon School
  2. 2. Agenda Introduzione e richiami formali Più in dettaglio Esempi Esercitazione l’aiuto del parser e browser PAUSA Esercitazione l’aiuto del parser e browser
  3. 3. Cos’è XSL-T Raccomandazione del W3C (la 1.0 novembre 1999, 2.0 gennaio 2007) È un linguaggio XML che Trasforma un documento (XML) in input in un altro documento XML, o in testo, html, xhtml… NS: http://www.w3.org/1999/XSL/Transform Contiene dei template che vengono applicati attraverso dei matching (che identificano gli elementi del documento di input) Il Data Model è identio a quello di XPATH
  4. 4. Fonte: w3.org XSL
  5. 5. Il nostro file di esempio Root Element / Root Node Document Elem <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="esempio1.xslt"?> <!--Anagrafica del clienti del mercato--> Process Instruc. <anagrafica> <testata> <nomemercato id="007">Mercato di test</nomemercato> Comment <data>Giovedi 18 dicembre 2003 16.05.29</data> </testata> <record> <codice_cliente>000105</codice_cliente> <rag_soc>Miami American Cafe</rag_soc>Element <codice_fiscale>IT07654930130</codice_fiscale> <indirizzo tipo="casa">Viale Carlo Espinasse 5, Como</indirizzo> <num_prodotti>13</num_prodotti> </record> <record> Attribute <codice_cliente>000302</codice_cliente> <rag_soc>Filiberto Gilardi</rag_soc> <codice_fiscale>IT87654770157</codice_fiscale> <indirizzo tipo="ufficio">Via Biancospini 20, Messina</indirizzo> <num_prodotti>8</num_prodotti> </record> </anagrafica> Text Node
  6. 6. Un file XSL-T “nudoecrudo.xslt”<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Tran sform"></xsl:stylesheet>
  7. 7. DEMOApplichiamo al nostro xml l’xslt appena vistojava AccessXSLTC -IN Elenco.xml -XSL nudoecrudo.xslt
  8. 8. Risultato<?xml version="1.0" encoding="UTF-8"? >Mercato di testGiovedi 18 dicembre 2003 16.05.295Miami American CafeIT07654930130Viale Carlo Espinasse 5, Como13si302Filiberto GilardiIT87654770157Via Biancospini 20, Messina81302EidonIT887511231Via Bassini 17/2, Milano18
  9. 9. L’elaborazione di XSL-T1. Legge il foglio di stile XSL-T2. Legge il documento XML in input3. Costruisce in output un documento che si ottiene trasformando l’input con le regole di template e pattern presenti nel foglio di stile4. Se il template non viene trovato, applica quello di default: in output tutto il testo contenuto nei tag
  10. 10. Il template <xsl:template match="anagrafica"><html>… Al macthing tra il nodo corrente e l’attributo match viene applicato il template È possibile usare LocationXPath, Axis e Predicati
  11. 11. Il template di default<xsl:template match="*|/"> <xsl:apply-templates/></xsl:template><xsl:template match="text( )|@*"> <xsl:value-of select="."/></xsl:template><xsl:template match="processing-instruction( )|comment( )"/>
  12. 12. Un esempio semplice<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Tran sform" version="1.0"> <xsl:output omit-xml-declaration="yes"/> <xsl:template match="anagrafica"> <xsl:value-of select="testata/nomemercato"/> </xsl:template></xsl:stylesheet>
  13. 13. XSL-T: xsl:value-of… <h1><xsl:value-of select=“XPathExpression"/></h1> ... Potete immaginare già a cosa serva... Recupera le informazioni puntate dalla stringa XPath. I tag che non appartengono al namespace xsl vengono riportati cosi come sono sul documento di output.
  14. 14. XSL-T: xsl:value-of<xsl:value-of select="3"/><xsl:value-of select="1 + 2"/><xsl:value-of select="@price + @tax"/><xsl:value-of select="@salary * 0.87"/><xsl:value-of select="@visitors div 365"/><xsl:value-of select="@days mod 7"/>
  15. 15. XSL-T: xsl:for-each <xsl:for-each select=“record"> … </xsl:for-each> Anche qui non è difficile capire significato: per ogni tag record contenuto nel nodo corrente, applica la struttura al suo interno. Naturalmente, al posto di RECORD, poteva esserci una qualunque istruzione XPath!
  16. 16. XSLT: xsl:sortAll’interno di un ciclo xsl:for-each ordina la sequenza degli elementi, è possibile utilizzarne anche più di uno:<xsl:for-each select="record"> <xsl:sort select=“elemento" order="ascending|descending" data-type=“text|number| qname-but-not-ncname"/> …</xsl:sort>
  17. 17. XSL-T: xsl:attribute<a onclick=“<xsl:value-of select="@name"/>”> <img hspace="0“ src="img.gif“ border="0"> <xsl:attribute name="id"> Img<xsl:value-of select="@name"/> </xsl:attribute> </img></a>
  18. 18. XSL-T: xsl:if<xsl:if test="js:IsEan(string(@ITEM_NO))"> <fo:instream-foreign-object width="28mm" height="8mm"> <svg:svg height="8mm" width="28mm"> …. </fo:instream-foreign-object></xsl:if>
  19. 19. XSL-T: xsl:choose<xsl:choose> <xsl:when test="trasporto = D"> <fo:block text-align="center">Destinatario</fo:block> </xsl:when> <xsl:when test="trasporto = ‘C"> <fo:block> <fo:instream-foreign-object> <svg:svg width="2mm"> …. </svg:svg> </fo:instream-foreign-object> </fo:block> </xsl:when> <xsl:otherwise> <fo:block text-align="center">Mittente</fo:block> </xsl:otherwise></xsl:choose>
  20. 20. XSL-T: xsl:textPreserva il testo contenuto per riportarlo inoutput senza variazioni sugli spazi:<xsl:text disable-output-escaping = "yes" | "no"> <!-- Content: #PCDATA --></xsl:text>
  21. 21. XSL-T: xsl:decimal-formatDeve essere figlio di xsl:stylesheet. Definiscequali sono i caratteri speciali utilizzati dallafunzione format-number:<xsl:decimal-format name="euro" decimal-separator="," grouping-separator="." digit="#"infinity="InFiNiTo" minus-sign="-" NaN="NaN"pattern-separator=";" per-mille="‰"percent="%" zero-digit="0"/>
  22. 22. XSL-T: format-number()<xsl:value-of select="format-number( 1 div0 ,€ ###,00, euro)"/>Parametri: 1) Il valore/xpath da formattare 2) La stringa di formattazione (http://java.sun.com/j2se/1.5.0/docs/api/java/text/Dec) 3) Il nome del DecimalFormat (facoltativo)
  23. 23. XSL-T: altri elementi comuni xsl:copy xsl:variable xsl:comment xsl:preserve-space xsl:element xsl:apply-templates xsl:output xsl:number…
  24. 24. XSL-T: funzioni current() document() format-number() function-available() element-available()+ naturalmente quelle di XPATH
  25. 25. ESERCITAZIONI
  26. 26. OrdinaleModificando il file Elenco.xslt, inserire una prima colonna con l’ordinale.Suggerimento: position()
  27. 27. Soluzione… <tr> <th>Num</th> <th>…… <td> <xsl:value-of select="position( )"/> </td>…
  28. 28. E..Non voglio un numero arabo ma un numero romano….Suggerimento:xsl:number e position()
  29. 29. Soluzione…<td> <xsl:number level="single" format="I" value="position()"/></td>…
  30. 30. Stringhe …Se la partita iva inizia con “IT…” il testo della stessa deve essere in italico:Suggerimento: xsl:if e funzione xpath starts-with
  31. 31. Soluzione…<td> <xsl:if test="starts-with(codice_fiscale, IT)"> <xsl:attribute name="style"> font-style:italic;</xsl:attribute> </xsl:if> <xsl:value-of select="codice_fiscale"/></td>…
  32. 32. Ordinare i recordModificando il file Elenco.xslt, far rendeizzare i record ordinati per codice_client discendenteSuggerimento:xsl:sort
  33. 33. Soluzione…</tr> <xsl:for-each select="record"> <xsl:sort select="codice_cliente" order="descending" data-type="number"/> <tr> <td>…
  34. 34. Avere un effetto di bgcolor simile a:Suggerimento: xsl:attribute, xsl:choose, position() e bgcolor(html)
  35. 35. Soluzione…<tr> <xsl:attribute name="bgcolor"> <xsl:choose> <xsl:when test="position( ) mod 2">Silver</xsl:when> <xsl:otherwise>Gray</xsl:otherwise> </xsl:choose> </xsl:attribute><td>…
  36. 36. Inserire il totale dei prodotti Suggerimento: xsl:value-of e sum()
  37. 37. Soluzione… </table> <h2>Totale prodotti <xsl:value-of select="sum(record/num_prodotti)"></xsl:valu e-of></h2> </body>…
  38. 38. Aggiungere e formattare il numero deiprodottiSuggerimento: xsl:decimal-format e format- number()
  39. 39. Soluzione<xsl:decimal-format name="euro" decimal- separator="," grouping-separator="."/>… <td> <xsl:value-of select="format- number(num_prodotti, € #.###,00, euro)"/> </td>…
  40. 40. Inserire uno spazio tra 007 e Mercato
  41. 41. Soluzione…nt><xsl:text> </xsl:text><xsl:value-of s…
  42. 42. ESERCIZZZZIIIOOONEEEEQueste pagine sono fatte con questatecnologia:http://atcasa.corriere.it/Outlet-Co/outlet_campania.shtmlPartendo dalla sola pagina shtml, voglio ottenere unXML e un XSL-T.
  43. 43. Riferimentihttp://www.w3.org/TR/xslt/http://xmlsoft.org/http://www.slideshare.net/yht4ever/xpath-xml-path-lahttp://www.cs.unibo.it/~ghini/didattica/informatica_geXML in a Nutshell, Third Edition by Elliotte Rusty Harold and W. Scott Means (Paperback - Sep 23, 2004)
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×