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
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.
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>
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
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.