>>introduzione << | indice analitico |
Pag 1 | Con XSL si può liberamente modificare qualunque file di testo. |
Pag 2 | Ogni stylesheet XSL deve cominciare con l'elemento xsl:stylesheet. L'attributo version='1.0' specifica la versione delle specifiche XSL(T). Il più semplice stylesheet non contiene informazioni: viene applicata l'elaborazione default, che prevede la copia del testo con l'eliminazione dei tag. |
Pag 3 | Un processore XSL scorre il sorgente e cerca il tag specificato nella regola xsl:template match=. Se lo trova, valuta le istruzioni contenute e scrive il risultato sull'output. |
Pag 4 | Il contenuto dei tag può essere recuperato in due modi. Il costrutto xsl:value-of copia il contenuto senza elaborazioni. L'istruzione xsl:apply-templates continua invece l'elaborazione dell'elemento. |
Pag 5 | Abbiamo detto che un processore XSL scorre il sorgente e cerca il tag specificato nella regola template. Se lo trova, valuta le istruzioni contenute e scrive il risultato sull'output. |
Pag 6 | Le parti del documento sono individuate per mezzo dei location path. La sintassi è definita nelle specifiche XPath. I casi semplici sono molto simili al path del filesystem. |
Pag 7 | L'elaborazione comincia sempre con il template match="/" che individua il nodo radice (il nodo il cui unico figlio è il documento sorgente). Molti stylesheets non contengono esplicitamente questo elemento e in questo caso viene usato il template implicito (it contains as the sole instruction) che dice: elabora tutti i figli del nodo corrente, inclusi i nodi di testo. Quando c'è un template per un nodo, non viene richiamata l'elaborazione default. Se si vogliono includere i discendenti del nodo, occorre richiedere esplicitamente i loro template |
Pag 8 | Un template può chiedere il match a più di un path, separati da |. La wildcard "*" individua tutte le possibilità. |
Pag 9 | "//" all'inizio del path significa elabora tutti i nodi di questo tipo. All'interno di un path significa: elabora tutti i nodi entro il nodo individuato dalla prima parte del path. |
Pag 10 | Con mode un elemento può essere elaborato più volte, producendo diversi risultati. |
Pag 11 | Spesso diversi template corrispondono allo stesso elemento del sorgente XML: occorre decidere quale deve essere usato. L'ordine di priorità viene specificato dall'attributo priority. Se l'attributo non viene specificato, la priorità viene calcolata con diverse regole. |
Pag 12 | Gli attributi sono recuperati in modo simile agli elementi. Notare il carattere "@" che precede il nome dell'attributo. |
Pag 13 | Gli attributi possono essere elaborati come gli elementi. |
Pag 14 | Si possono anche selezionare elementi che contengono o meno l'attributo dato. |
Pag 15 | Gli assi giocano un ruolo importante in XSLT. Confronta gli assi figlio, discendente, genitore, ancestor, following-sibling, preceding-sibling, following, preceding, attribute, namespace, self, descendant-or-self, ancestor-or-self. |
Pag 16 | In questo esempio sono usati tutti gli assi. |
Pag 17 | L'asse child:: può essere omesso perchè è il default. L'asse attributo può essere abbreviato a @. // abbrevia /descendant-or-self::, . abbrevia self:: e .. abbrevia parent::. |
Pag 18 | L'istruzione xsl:for-each contiene un template che viene applicato a ogni nodo selezionato dall'attributo select. |
Pag 19 | I nodi selezionati con xsl:for-each o xsl:apply-templates possono essere ordinati. L'attributo order determina l'ordine di ordinamento. |
Pag 20 | L'ordinamento può essere ordinato in modo text o in modo numerico (data-type="text" o data-type="number"). Si noti che in text mode 2 viene dopo 10. |
Pag 21 | case-order="upper-first" ordina prima le lettere maiuscole e case-order="lower-first" prima le minuscole. |
Pag 22 | xsl:element genera elementi al momento dell'elaborazione. |
Pag 23 | xsl:attribute genera elementi al momento dell'elaborazione e crea attributi nell'elemento i cui è incluso. |
Pag 24 | I costrutti copy e copy-of constructs sono usati per copiare nodi. L'elemento copy copia solo il nodo corrente senza figli né attributi, mentre copy-of copia tutto. |
Pag 25 | L'elemento xsl:copy può avere l'attributo use-attribute-sets, che specifica attributi per l'elemento copiato. |
Pag 26 | L'istruzione xsl:if consente l'elaborazione condizionata. Quando si usa il costrutto for-each per aggiungere testo tra le voci, spesso non si vuole aggiungere testo dopo l'ultimo elemento: il costrutto xsl-if viene utile. |
Pag 27 | L'elemento xsl:choose è usato per selezionare tra diverse possibilità. |
Pag 28 | Come trovare se un testo comincia con un numero. |
Pag 29 | L'elemento xsl:number inserisce un numero nell'output. La numerazione dipende dalla posizione dell'elemento e dalle definizione dell'attributo level. |
Pag 30 | Il formato dei numeri è dato dall'attributo format, che comincia con l'identificatore del formato e prosegue da caratteri separatori. Esempi. |
Pag 31 | Esempi di formattazione di numeri a più livelli. |
Pag 32 | xsl:variable inizializza variabili in modi differenti , così come xsl:param. |
Pag 33 | Uno stylesheet può contenere diverse variabili con lo stesso nome. Esistono variabili locali e variabili globali. |
Pag 34 | Si possono passare parametri con l'elemento xsl:with-param. Se il template contiene un elemento xsl:param con lo stesso nome come nome dell'attributo, questo valore viene passato. |
Pag 35 | Una variabile può contenere un result tree fragment. Le operazioni consentite su un result tree fragment sono un sottoinsieme di quelle consentite su un node-set. Un'operazione su un result tree fragment è consentita solo se sarebbe permessa su una stringa (compresa la conversione della stringa a numero o boolean). In particolare non è permesso l'uso di /, //, e [] sui result tree fragments. |
Pag 36 | C'è una importante differenza nella specificazione del valore di una variabile. |
Pag 37 | La funzione number trasforma i suoi argomenti in un numero. |
Pag 38 | Addizione, sottrazione e moltiplicazione hanno sintassi comune. La sintassi della divisione è meno usuale, si usa la parola chiave div> perchè lo / viene usato nei pattern. L'operatore mod restituisce il resto della divisione troncata. |
Pag 39 | La funzione sum() somma tutti i numeri del nodo selezionato. |
Pag 40 | Le funzioni ceilng(), floor() e round() trasformano numeri floating in interi. |
Pag 41 | La funzione string() trasforma i suoi argomenti in stringa: viene poco usata in quanto di solito viene chiamata per default. |
Pag 42 | string(number(.))='NaN' testa se il valore dell'elemento è un numero |
Pag 43 | La funzione boolean(). |
Pag 44 | La funzione not() restituisce true se l'argomento è falso. |
Pag 45 | Le funzioni true() e false() sono utili per testare condizioni durante la programmazione. |
Pag 46 | La funzione lang() restituisce true se il linguaggio del context node specificato dall'attributo xml:lang è lo stesso o un sottolinguaggio. |
Pag 47 | La funzione string() trasforma i suoi argomenti in stringa: viene poco usata in quanto di solito viene chiamata per default. |
Pag 48 | La funzione concat restituisce la concatenazione dei suoi argomenti. |
Pag 49 | La funzione starts-with restituisce true se il primo argomento comincia con il secondo. La funzione contains restituisce true se il primo argomento contiene il secondo. |
Pag 50 | La funzione substring è classica. Le funzioni substring-before e substring-after restituiscono la sottostringa del primo argomento che precede o segue la prima occorrenza del secondo argmento nel primo. |
Pag 51 | La funzione string-length è classica. La funzione normalize-space è restituisce l'argomento con gli spazi bianchi normalizzati (li riduce a uno solo e toglie gli iniziali e finali). |
Pag 52 | La funzione translate è restituisce il primo argomento con le occorrenze del secondo argomento sostituite dai caratteri del terzo argomento. Se un carattere appare più volte nel secondo argomento, la prima occorrenza determina il carattere da sostituire. Se il terzo argomento è più lungo del secondo, i caratteri in eccesso vengono ignorati. |
Pag 53 | La funzione position restituisce un numero uguale alla posizione nel contesto (context position). La funzione last restituisce un numero uguale alla dimensione del contesto dalla espressione di valutazione del contesto. |
Pag 54 | La funzione count restituisce il numero dei nodi nell'argument node-set. |
Pag 55 | La funzione id seleziona elementi individuati dal loro ID. Molti id possono essere forniti contemporaneamente. |
Pag 56 | Esempio di uso della funzione id (apici e pedici). |
Pag 57 | Le funzioni name, local-name e namespace-uri() sono usati per ricavere informazioni suoi nomi dell'elemento, degli attributi e dei namespaces. |
Pag 58 | L'elemento xsl:output consente di specificare il result tree che deve essere prodotto (xml o html) ed è ammesso solo come elemento top-level. (Si ricordi che il processore XSLT non è tenuto a produrre un result tree). |
Pag 59 | In assenza dell'elemento xsl:output, il metodo default è xml, ma se l'elemento documento dell'output ha valore html e non ha l'attributo 'xmlns' viene usato il metodo html. |
Pag 60 | Il metodo di output html non scrive il tag di chiusura degli elementi vuoti specificati nel comandi HTML e non effettua la conversione con escape dei contenuti degli script e degli stili. |
Pag 61 | L'attributo encoding specifica la codifica desiderata. Il metodo di output html deve aggiungere un elemento META immediatamente dopo il tag specificando la codifica. |
Pag 62 | Il metodo di output text produce un albero scrivendo i valori stringa di ogni nodo di testo nell'ordine in cui compaiono. |
Pag 63 | I costrutti copy e copy-of sono usati per copiare nodi. L'elemento copy copia solo il nodo corrente senza figli e attributi, mentre copy-of copia tutto. |
Pag 64 | L'elemento xsl:copy può avere un attributo use-attribute-sets, che consente di specificare attributi per gli elementi copaiti. |
Pag 65 | La funzione current restituisce un nodo che ha il nodo corrente come solo membro. Per una espressione outermost (espressione che non occorre entro un'altra espressione), il nodo corrente è sempre il nodo context. Ma entro le parentesi quadre il nodo corrente di solito è diverso dal nodo context. |
Pag 66 | La funzione generate-id genera id conformi alle specifiche XML. |
Pag 67 | Altri stylesheet possono essere importati (xsl:import) o inclusi (xsl:include) in uno stylesheet. Le due operazioni sono analoghe, ma le definizioni e le regole dello stylesheet che importa hanno la precedenza su quello dello stylesheet importato. |
Pag 68 | Esempi di xsl:import. |
Pag 69 | Altri esempi di xsl:include e xsl:import. |
Pag 70 | Puoi usare l'elemento xsl:apply-imports per ricevere informazioni da un altro template, di ci vuoi cambiare il comportamento. |
Pag 71 | La precedenza di import supera quella di priority. |