Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 2 di 9
  • livello principiante
Indice lezioni

Un primo esempio

I vantaggi di generare un documento XSLT
I vantaggi di generare un documento XSLT
Link copiato negli appunti

Analizziamo innanzitutto cosa comporta questa nuova strategia d’approccio ai contenuti attraverso un esempio apparentemente banale.

Con i comuni linguaggi di scripting è necessario porre attenzione all’uso che si fa degli apici singoli o doppi ogni qual volta si produca un elemento contenente attributi, dal momento che questi devono essere delimitati da apici. Invece per scrivere dinamicamente un collegamento ipertestuale in JavaScript abbiamo due alternative possibili:

document.write(‘<a href=”…”>Un link dinamico</a>’);

document.write(“<a href=’…’>Un link dinamico</a>”);

Nei linguaggi di programmazione si distingue in genere tra singoli caratteri, da racchiudere in apici singoli, e stringhe di caratteri da racchiudere invece in apici doppi: in questo caso solo la seconda alternativa risulta applicabile, o meglio non possono esistere differenze.

Entrambi i contesti, tuttavia, conducono ad un vicolo cieco nel momento in cui si voglia inserire nell’attributo href l’invocazione di funzioni che richiedano un parametro di tipo stringa e conseguentemente una terza coppia di apici. (funzioni come alert() ed eval() sono gli esempi più comuni).

document.write(‘<a href=”javascript: alert( ‘Non funziona‘
) ”>Un link dinamico</a>’);

document.write(“<a href=’javascript: alert( “Non funziona”
) ‘>Un link dinamico</a>”);

Nessuna delle possibilità appena mostrate può funzionare, dal momento che solo la stringa “<a href=”javascript: alert( “ verrebbe considerata argomento di write(), mentre il resto del comando finirà col produrre un errore.

In questi casi si ricorre alla pratica di escaping, che consiste nell’anteporre al carattere incriminato un carattere di controllo, nel caso di Java e JavaScript la barra a sinistra (backslash). All’interno di una JSP scriveremmo ad esempio:

out.write(“<a href=”javascript: alert( ‘Funziona’
) ”>Link dinamico</a>”);

A questo problema si aggiunge il fatto di impedire un colpo d’occhio adeguato, nella confusione delle chiamate alla funzione write() e dell’escaping di caratteri, sull’output XML che viene prodotto; oltre alla difficoltà nell’eseguire un copia e incolla di esso senza dover, ad esempio, procedere all’indietro con l’unescaping manuale dei caratteri speciali.

Il meccanismo dei namespaces permette invece di rendere non ambiguo il codice XML, anteponendo un prefisso opportuno al nome degli elementi e separando questi con il carattere di due punti. Nel preambolo di un foglio di stile si associa quindi il namespace di XSLT ad un prefisso opportuno, tipicamente “xsl”, e si anteporrà ad ogni elemento del linguaggio di trasformazione la sequenza “xsl:”, come mostrato di seguito nel file esempio1.xsl :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
<html>
<head>
<title>Il primo foglio di stile</title>
</head>
<body>
<a href=”javascript: alert(‘Funziona’) ”>Link
dinamico</a>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

In questo modo è possibile scrivere elementi del formato di destinazione senza curarsi del fatto che questi siano immersi in un linguaggio di trasformazione, consentendo ad esempio di partire da una pagina HTML statica, magari prodotta dalla divisione “creativa” di una Web Agency, e aggiungere gradualmente tutta la logica necessaria ad ottenere il risultato finale.


Ti consigliamo anche