XML e XSL
XSL - 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).
• <?xml version="1.0"?>
• <?xml-stylesheet type="text/xsl“ href="esempio9.xsl"?>
Pattern
• 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
I MODELLI - xsl:template
• 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.
Esempio 9
• <?xml version="1.0"?>
• <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
Esempio9.xsl
XSL:TEMPLATE
• <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.
XSL:VALUE-OF
• 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"/>
Esempio10.xsl
XSL:FOR-EACH
• <xsl:for-each select="PATTERN">
• REGOLE DI ELABORAZIONE
• </xsl:for-each>
Esempio11.xsl
Esempio12.xsl
Esempio13.xsl
Valore degli attributi
• <!ELEMENT STUDENTE (DATI_PERSONALI,ESAMI?)>
• <!ATTLIST STUDENTE tasse (inregola|noninregola) "noninregola">
• @nomeAttributo
• <xsl:value-of select=“STUDENTE/@tasse"/>Esempio14.xsl
Aggiungere attributi HTML
• <img>
• <xsl:attribute name="src">
• <xsl:value-of select=“./FOTO"/>
• </xsl:attribute>
• </img>
Esempio15.xsl
Ri-ordinare il contenuto: xsl:sort
• Nell'eleborare l'output e` possibile anche riordinare gli elementi da presentare.
• <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".
Esempio16.xsl
Filtrare l'informazione
• 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
• Attenzione agli spazi…..
Esempio17.xsl
Condizionali con xsl:if
• 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> Esempio18.xsl
Scelta tra casi: xsl:choose, xsl:when, xsl:otherwise • se vale la condizione 1, allora fai X
• ....
• se vale la condizione n, allora fai Y
• altrimenti fai Z
• <xsl:choose> • <xsl:when test="CONDITION">
– REGOLE DI ELABORAZIONE • </xsl:when> • ... ALTRE CONDIZIONI ... • <xsl:when test="CONDITION">
– REGOLE DI ELABORAZIONE • </xsl:when> • <xsl:otherwise>
– REGOLE DI ELABORAZIONE • </xsl:otherwise> • </xsl:choose>