XSL
eXtensible Stylesheet Language
Un file XML non ha tag predefiniti, quindi si possono usare i fogli di stile, ma occorre definire tutti gli elementi,
altrimenti il documento XML viene visualizzato come un'unica stringa.
Ma i fogli di stile hanno forti limitazioni con XML: non visualizzano il valore degli attributi,
non consentono di inserire testo, nè di selezionare parti del testo.
Si utilizza pertanto
XSL, che utilizza tre linguaggi per eseguire
tre compiti fondamentali:
- XPath individua gli elementi e i loro attributi
- XSLT trasforma i dati
- XSL-FO formatta gli oggetti: ora formalmente denominato XSL
Questo conferisce estrema potenza e versatilità per esempio potremmo utilizzare un altro linguaggio per indivduare gli elementi,
o produrre direttamente codice XHTML invece di usare XSL-FO, senza cambiare le altre parti.
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="stile.xslt" ?>
il tutorial W3Schools
XPath
È una sintassi per creare espressioni (pattern) che individuano i nodi di un albero XML.
Assomiglia al path del File System. Gli attributi si estraggono con @.
Ecco alcuni esempi:
/articolo/paragrafo/@titolo
/articolo/paragrafo[position()=2]
/articolo/paragrafo[position()=last()]
Esistono i concetti di nodo corrente (.) e nodo padre (..) e sono stati introdotti i concetti di 'tutti i discendenti' (//)
e 'tutti i sottoelementi' (*).
/articolo//immagineindividua tutti gli elementi contenuti in qualsiasi livello.
Esistono numerose funzioni: count(), concat(,,,), substring(), string-length(), starts-with(), end-width(), number(), round(), floor(), ceiling()
(W3Schools)
XSLT
Ha il compito di trasformare un documento XML in un altro documento di uguale o altra struttura
(XML, XHTML, WML, RTF o in semplici formati testuali).
Le informazioni sulla trasformazione vanno messe in un foglio di stile XSLT:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/transorm">
...
</xsl:stylesheet>
All'interno si utilizza XPath per individuare gli elementi da tasformare e si creano dei
template per indicare la trasformazione. Ecco come si visualizza il titolo del secondo
capitolo:
<xsl:template match="/libro/capitolo[position()=2]">
<xsl:value-of select="@titolo"/>
</xsl:template>
Per essere sicuri che il processo proceda anche nei sottoelementi, occorre inserire:
<xsl:apply-templates/>
Ed ecco come si può aggiungere testo e condizionarlo:
<xsl:template match="capitolo"> <h3>
<xsl:if test="@tipo='bibliografia'">
Bibliografia
</xsl:if>
<xsl:value-of select="@titolo"/> </h3>
<xsl:apply-templates/>
</xsl:template>
Per le scelte multiple abbiamo le istruzioni:
<xsl:choose> <xsl:when>, <xsl:otherwise> oppure <xsl:for-each>
Ed ecco come si costruisce un tag XHTML, per esempio img:
<xsl:template match="immagine">
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="@file"/>
</xsl:attribute>
</xsl:element>
</xsl:template>
il tutorial W3Schools
XSL-FO
XSL-FO è un linguaggio per formattare dati XML
XSL-FO sta per Extensible Stylesheet Language Formatting Objects
XSL-FO è una raccomandazione W3C
XSL-FO è ora chiamato formalmente XSL
il tutorial W3Schools