back to top

XML Stylesheet

In un documento XML si possono individuare tre parti fondamentali che dovrebbero essere gestite separatamente:

  • il contenuto (XML);
  • le specifiche relative agli elementi: la struttura (DTD, Namespaces, etc…);
  • le specifiche relative alla visualizzazione: lo stile (XSL, CSS, etc).

Il foglio di stile (stylesheet) specifica il formato di presentazione di un documento XML usando due categorie di tecniche:

  • trasformazione (opzionale) della struttura del documento di ingresso in un’altra struttura;
  • descrizione di come devono essere visualizzati gli elementi della struttura (proprietà).

Le operazioni di trasformazione consentono di:

  • generare del testo (costante);
  • eliminare parte del contenuto;
  • spostare parti di testo (es: scambiare l’ordine di nome e cognome);
  • duplicare parti di testo (es: duplicare i titoli per creare un indice);
  • ordinare alfabeticamente;
  • eseguire operazioni più complesse;

La descrizione avviene attraverso tre livelli di formattazione:

  • specifica del layout della schermata o della pagina;
  • inserzione di parti della struttura in "contenitori" base (paragrafi, liste, …);
  • specifica delle proprietà di formattazione (spaziatura, margini, allineamento, font, …) di ciascuno dei "contenitori".

XSL

XSL è l’acronimo di eXtensible Stylesheet Language, XSL è un linguaggio di annotazione che serve a "trasformare" la struttura di un documento in formato XML in un’altra struttura. Lo scopo principale di questa trasformazione è certamente quello di "convertire" il documento XML in un formato adatto alla presentazione su diversi supporti (per esempio, la sua trasformazione in HTML).

Ad esempio:

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="esempio.xsl"?>

Il linguaggio XSL utilizza i pattern per specificare gli elementi XML a cui viene applicato un certo template. I pattern sono definiti mediante espressioni di XPath.

Un template definisce una regola in base a cui gli elementi che corrispondono a un certo pattern devono essere elaborati. Per definire un template si usa il seguente comando:

<xsl:template match="PATTERN">
     REGOLE DI ELEBORAZIONE
</xsl:template>

L’attributo "match" è ovviamente obbligatorio, dato che contiene il pattern degli elementi a cui applicare il template in questione. Un’altro esempio:

<xsl:template match="/"> o <xsl:template match="DOCUMENTO">

Il template (o modello) si applica al pattern definito con l’attributo "match"; il pattern consiste nella semplice espressione "/", che significa il root element del documento in questione (cioe` l’elemento "DOCUMENTO"); il resto è semplice markup di HTML.

Naturalmente, la cosa più importante è quella di estrarre informazione dal file XML per riportarla sulla pagina HTML. A questo fine, il comando più importante è "xsl:value-of", che si usa come segue:

<xsl:value-of select="PATTERN"/>

come anche:

<xsl:for-each select="PATTERN">
     REGOLE DI ELABORAZIONE
  </xsl:for-each>

Nell’eleborare l’output e` possibile anche riordinare gli elementi da presentare; attraverso il comando sort:

<xsl:sort  select="PATTERN" order="descending">

dove "descending" è uno dei due possibili valori dell’attributo "order" (l’altro, "ascending", è il valore di default). E’ possibile anche combinare più ordinamenti (per esempio quello per anno e per nome dell’artista), basta usare più volte il comando "xsl:sort".

Per filtrare l’informazione da presentare, basta usare dei filtri nei pattern che vengono usati. Per esempio, per filtrare gli elementi che vengono selezionati con xsl:for-each, basta fare come segue:

<xsl:for-each select="PATTERN[FILTRO]">

Gli operatori ammessi nel filtro sono:

  • = uguale;
  • != diverso;
  • < minore di;
  • > maggiore di;

Bisogna fare particolare attenzione agli spazi che vengono avvertiti.

E’ anche possibile introdurre un test condizionale sulle regole di elaborazione. Ciò si ottiene usando l’elemento xsl:if come segue:

<xsl:if test="./@tasse='noninregola'"> 
REGOLE DI ELABORAZIONE 
</xsl:if>
Pubblicitร