Usare JavaScript in XML

Giovedì 27 Gennaio 2011 - 10:15

di Gabriele Romanato

XML/RSSScripting

Uno dei problemi maggiori di XML è il fatto che al momento, ad eccezione di DocBook, non esistono DTD pubbliche che permettano ai browser di riconoscere gli elementi ad esse associati. C’è di più: dato che i browser non usano un parser validante, anche se esistessero queste DTD i browser non le userebbero per validare il documento. Se per esempio prendiamo un documento XHTML servito come application/xhtml+xml e scriviamo:

<span>
 <p>...</p>
</span>

la pagina verrà visualizzata comunque, perché il browser vede marcatura ben formata e non effettua nessuna validazione. Ma allora se i browser non usano la DTD per assegnare un ruolo agli elementi della pagina, cosa usano? La risposta è: il namespace dell’elemento root, che in questo caso è:

http://www.w3.org/1999/xhtml

Il problema principale se vogliamo usare JavaScript all’interno di un documento XML è far riconoscere al browser l’elemento script e i suoi contenuti. Ciò può anche essere ottenuto tramite XSLT, ma se volessimo una soluzione più easy, potremmo scrivere:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.w3.org/1999/xhtml">
...

</root>

Abbiamo usato il namespace XHTML sull’elemento root del nostro documento XML. In questo modo possiamo scrivere:

<para>Test</para>

<script type="text/javascript">

<![CDATA[

 alert(document.getElementsByTagName('parà)[0].firstChild.nodeValue); // 'Test'

]]>

</script>

Certamente non è una soluzione molto elegante e, ripeto, esiste anche una soluzione con XSLT. Comunque sia, questa soluzione si applica quando non vogliamo usare solo elementi XHTML e soprattutto, quando abbiamo la necessità di eseguire degli script all’interno di un documento XML, magari a livello di test.

Tags:

Categoria: XML/RSS, Scripting | Permalink

Non ci sono ancora commenti a questo post

Inserisci il tuo commento:





(puoi usare i seguenti tag HTML per formattare il testo -
a href, b, i, br/, p, strong, em, ul, ol, li, blockquote, pre):

 

Anteprima del commento