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.