SlideShare a Scribd company logo
1 of 43
XSL-T


    Eidon School
Agenda
 Introduzione e richiami formali
 Più in dettaglio
 Esempi
 Esercitazione l’aiuto del parser e browser


 PAUSA


 Esercitazione l’aiuto del parser e browser
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
Fonte: w3.org   XSL
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
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>
DEMO
Applichiamo al nostro xml
    l’xslt appena visto

java 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
  CafeIT07654930130Viale Carlo Espinasse 5,
  Como13si302Filiberto
  GilardiIT87654770157Via Biancospini 20,
  Messina81302EidonIT887511231Via Bassini
  17/2, Milano18
L’elaborazione di XSL-T
1. Legge il foglio di stile XSL-T
2. Legge il documento XML in input
3. Costruisce in output un documento che si
   ottiene trasformando l’input con le regole di
   template e pattern presenti nel foglio di stile
4. Se il template non viene trovato, applica
   quello di default: in output tutto il testo
   contenuto nei tag
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
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( )"/>
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>
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.
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"/>
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!
XSLT: xsl:sort
All’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>
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>
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>
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>
XSL-T: xsl:text
Preserva il testo contenuto per riportarlo in
output senza variazioni sugli spazi:

<xsl:text
 disable-output-escaping = "yes" | "no">
 <!-- Content: #PCDATA -->
</xsl:text>
XSL-T: xsl:decimal-format
Deve essere figlio di xsl:stylesheet. Definisce
quali sono i caratteri speciali utilizzati dalla
funzione 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"/>
XSL-T: format-number()
<xsl:value-of select="format-number( 1 div
0 ,'€ ###,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)
XSL-T: altri elementi comuni
 xsl:copy
 xsl:variable
 xsl:comment
 xsl:preserve-space
 xsl:element
 xsl:apply-templates
 xsl:output
 xsl:number
…
XSL-T: funzioni
   current()
   document()
   format-number()
   function-available()
   element-available()

+ naturalmente quelle di XPATH
ESERCITAZIONI
Ordinale
Modificando 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 xpath starts-with
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>
…
Ordinare i record
Modificando il file Elenco.xslt, far rendeizzare i
 record ordinati per codice_client discendente

Suggerimento:
xsl:sort
Soluzione
…
</tr>
  <xsl:for-each select="record">
      <xsl:sort select="codice_cliente"
                  order="descending"
                        data-type="number"/>
      <tr>
            <td>
…
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>
                <xsl:otherwise>Gray</xsl:otherwise>
       </xsl:choose>
   </xsl:attribute>
<td>
…
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>
     </body>
…
Aggiungere e formattare il numero dei
prodotti




Suggerimento: xsl:decimal-format e format-
          number()
Soluzione
<xsl:decimal-format name="euro" decimal-
  separator="," grouping-separator="."/>
…
  <td>
      <xsl:value-of select="format-
            number(num_prodotti,
                  '€ #.###,00', 'euro')"/>
  </td>
…
Inserire uno spazio tra 007 e Mercato
Soluzione
…nt><xsl:text> </xsl:text><xsl:value-of s…
ESERCIZZZZIIIOOONEEEE
Queste pagine sono fatte con questa
tecnologia:
http://atcasa.corriere.it/Outlet-Co/outlet_campania.shtml



Partendo dalla sola pagina shtml, voglio ottenere un
XML e un XSL-T.
Riferimenti
http://www.w3.org/TR/xslt/
http://xmlsoft.org/
http://www.slideshare.net/yht4ever/xpath-xml-path-la
http://www.cs.unibo.it/~ghini/didattica/informatica_ge
XML in a Nutshell, Third Edition by Elliotte
  Rusty Harold and W. Scott Means
  (Paperback - Sep 23, 2004)

More Related Content

Similar to XSLT

XML &amp; XSLT
XML &amp; XSLTXML &amp; XSLT
XML &amp; XSLTapest
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client Sabino Labarile
 
PHP Template Engine (introduzione)
PHP Template Engine (introduzione)PHP Template Engine (introduzione)
PHP Template Engine (introduzione)Asmir Mustafic
 
Javascript - 8 | WebMaster & WebDesigner
Javascript - 8 | WebMaster & WebDesignerJavascript - 8 | WebMaster & WebDesigner
Javascript - 8 | WebMaster & WebDesignerMatteo Magni
 
Web base-02-css
Web base-02-cssWeb base-02-css
Web base-02-cssStudiabo
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuerySandro Marcon
 
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebSpring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebMassimiliano Dessì
 
CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)Matteo Ziviani
 
PHP 5.3 Attribute Template Language (Template Engine)
PHP 5.3 Attribute Template Language (Template Engine)PHP 5.3 Attribute Template Language (Template Engine)
PHP 5.3 Attribute Template Language (Template Engine)Asmir Mustafic
 
jQuery - 2 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesignerjQuery - 2 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesignerMatteo Magni
 
•Blog: quali tecnologie per il futuro?
•Blog: quali tecnologie per il futuro?•Blog: quali tecnologie per il futuro?
•Blog: quali tecnologie per il futuro?IWA
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerMatteo Magni
 
Mageploy presentato al Mage::day() 2013
Mageploy presentato al Mage::day() 2013Mageploy presentato al Mage::day() 2013
Mageploy presentato al Mage::day() 2013Alessandro Ronchi
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerMatteo Magni
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M Lguestbe916c
 
jQuery - 2 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesignerjQuery - 2 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesignerMatteo Magni
 

Similar to XSLT (20)

XML &amp; XSLT
XML &amp; XSLTXML &amp; XSLT
XML &amp; XSLT
 
E suap - tecnologie client
E suap - tecnologie client E suap - tecnologie client
E suap - tecnologie client
 
PHP Template Engine (introduzione)
PHP Template Engine (introduzione)PHP Template Engine (introduzione)
PHP Template Engine (introduzione)
 
TYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novitaTYPO3 CMS 7.3 - le novita
TYPO3 CMS 7.3 - le novita
 
Javascript - 8 | WebMaster & WebDesigner
Javascript - 8 | WebMaster & WebDesignerJavascript - 8 | WebMaster & WebDesigner
Javascript - 8 | WebMaster & WebDesigner
 
Web base-02-css
Web base-02-cssWeb base-02-css
Web base-02-css
 
Introduzione a jQuery
Introduzione a jQueryIntroduzione a jQuery
Introduzione a jQuery
 
Oracle PL sql 1
Oracle PL sql 1Oracle PL sql 1
Oracle PL sql 1
 
MySQL
MySQLMySQL
MySQL
 
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis WebSpring, IBatis e Transazioni Aop Nel Jug Avis Web
Spring, IBatis e Transazioni Aop Nel Jug Avis Web
 
CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)
 
PHP 5.3 Attribute Template Language (Template Engine)
PHP 5.3 Attribute Template Language (Template Engine)PHP 5.3 Attribute Template Language (Template Engine)
PHP 5.3 Attribute Template Language (Template Engine)
 
jQuery - 2 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesignerjQuery - 2 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesigner
 
Xaml su Xamarin
Xaml su XamarinXaml su Xamarin
Xaml su Xamarin
 
•Blog: quali tecnologie per il futuro?
•Blog: quali tecnologie per il futuro?•Blog: quali tecnologie per il futuro?
•Blog: quali tecnologie per il futuro?
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 
Mageploy presentato al Mage::day() 2013
Mageploy presentato al Mage::day() 2013Mageploy presentato al Mage::day() 2013
Mageploy presentato al Mage::day() 2013
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
Laboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M LLaboratorio Di  Basi Di  Dati 12  P H P   Gestione Di File  X M L
Laboratorio Di Basi Di Dati 12 P H P Gestione Di File X M L
 
jQuery - 2 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesignerjQuery - 2 | WebMaster & WebDesigner
jQuery - 2 | WebMaster & WebDesigner
 

XSLT

  • 1. XSL-T Eidon School
  • 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. 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
  • 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. 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. DEMO Applichiamo al nostro xml l’xslt appena visto java AccessXSLTC -IN Elenco.xml -XSL nudoecrudo.xslt
  • 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. L’elaborazione di XSL-T 1. Legge il foglio di stile XSL-T 2. Legge il documento XML in input 3. Costruisce in output un documento che si ottiene trasformando l’input con le regole di template e pattern presenti nel foglio di stile 4. Se il template non viene trovato, applica quello di default: in output tutto il testo contenuto nei tag
  • 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. 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. 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. 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. 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. 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. XSLT: xsl:sort All’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. 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. 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. 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. XSL-T: xsl:text Preserva il testo contenuto per riportarlo in output senza variazioni sugli spazi: <xsl:text disable-output-escaping = "yes" | "no"> <!-- Content: #PCDATA --> </xsl:text>
  • 21. XSL-T: xsl:decimal-format Deve essere figlio di xsl:stylesheet. Definisce quali sono i caratteri speciali utilizzati dalla funzione 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. XSL-T: format-number() <xsl:value-of select="format-number( 1 div 0 ,'€ ###,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. XSL-T: altri elementi comuni  xsl:copy  xsl:variable  xsl:comment  xsl:preserve-space  xsl:element  xsl:apply-templates  xsl:output  xsl:number …
  • 24. XSL-T: funzioni  current()  document()  format-number()  function-available()  element-available() + naturalmente quelle di XPATH
  • 26. Ordinale Modificando il file Elenco.xslt, inserire una prima colonna con l’ordinale. Suggerimento: position()
  • 27. Soluzione … <tr> <th>Num</th> <th>… … <td> <xsl:value-of select="position( )"/> </td> …
  • 28. E.. Non voglio un numero arabo ma un numero romano…. Suggerimento: xsl:number e position()
  • 29. Soluzione … <td> <xsl:number level="single" format="I" value="position()"/> </td> …
  • 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. 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. Ordinare i record Modificando il file Elenco.xslt, far rendeizzare i record ordinati per codice_client discendente Suggerimento: xsl:sort
  • 33. Soluzione … </tr> <xsl:for-each select="record"> <xsl:sort select="codice_cliente" order="descending" data-type="number"/> <tr> <td> …
  • 34. Avere un effetto di bgcolor simile a: Suggerimento: xsl:attribute, xsl:choose, position() e bgcolor(html)
  • 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. Inserire il totale dei prodotti  Suggerimento: xsl:value-of e sum()
  • 37. Soluzione … </table> <h2>Totale prodotti <xsl:value-of select="sum(record/num_prodotti)"></xsl:valu e-of></h2> </body> …
  • 38. Aggiungere e formattare il numero dei prodotti Suggerimento: xsl:decimal-format e format- number()
  • 39. Soluzione <xsl:decimal-format name="euro" decimal- separator="," grouping-separator="."/> … <td> <xsl:value-of select="format- number(num_prodotti, '€ #.###,00', 'euro')"/> </td> …
  • 40. Inserire uno spazio tra 007 e Mercato
  • 42. ESERCIZZZZIIIOOONEEEE Queste pagine sono fatte con questa tecnologia: http://atcasa.corriere.it/Outlet-Co/outlet_campania.shtml Partendo dalla sola pagina shtml, voglio ottenere un XML e un XSL-T.