XSL in breve - XPath - specifiche W3C
Per dar forma a un file XML, si possono usare
i fogli di stile, dando una definizione a tutti gli elementi
(gli elementi non definiti vengono visualizzati come una stringa di testo).
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, definito dal W3C 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
L'associazione tra un documento XML e un foglio di stile avviene nel prologo del documento XML per mezzo dell'istruzione:
<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="nome.xsl" ?>
Il documento XSL � anch'esso un documento xml; inoltre deve dichiarare i namespaces, quindi ha il seguente prologo:
<??xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd >
template
Un template è un insieme di regole: pu� essere considerato una routine di trasformazione.
La sintassi completa � la seguente:
<xsl:template match=pattern
name=qualified-name priority=number mode=qualified-name>...</xsl:template>
Il valore dell'attributo
match � un pattern che individua i nodi a cui applicare le regole del template,
quindi ogni file XSL deve iniziare con
<template match="/">
Se viene valorizzato l'attributo
name, il template pu� essere richiamato:
<call-template name="..." />
Ma generalmente un template viene applicato ai nodi selezionati dal valore di
select
<apply-template select="..." nome="..." />
value of
Tutto quello che non � XSL viene copiato sul file di output.
Per trascrivere dati dal file XML al file di output, si usa la funzione:
<xsl:value-of select="..." / >
element
Con element si genera un tag HTML: occorre specificare il nome del tag e gli eventuali attributi. Ecco due esempi per generare tag img e a:
<xsl:element name="img">
<xsl:attribute name="src">
<xsl:value-of select="@file"/>
</xsl:attribute>
</xsl:element>
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="..."/>
</xsl:attribute>
stringa o <xsl:value-of select="..."/>
</xsl:element>
All'interno delle virgolette si pu� chedere al parser di interpretare script, mettendoli tra parentesi graffe.
sort
<sort select= "xpath-ordinamento" order="ascending" />
Ordina l'isieme dei nodi individuati dall�XPath specificato.
iterazioni
<for-each select="xpath">...<for-each>
Il frammento di codice viene applicato a tutti i nodi selezionati dall�XPath specificato.
esecuzione condizionata
<if test="xpath-filter">...</if>
<choose>
<when test="xpath-filter">�</when>
...
<otherwise>�</otherwise>
</choose>