|
L'XML in apparenza assomiglia all'HTML, in realtà ne differisce in maniera
sostanziale. Questo è importante: infatti un normale file HTML non è,
come forse ci si potrebbe aspettare, un file XML valido: conseguenza, l'XML
non è HTML con la libertà di usare i tag che si vogliono. I tag non devono
essere necessariamente definiti con un DTD esterno: ovvero si può scrivere
un file XML, senza la necessità di specificare il DTD. Se si vuole usarlo,
il DTD viene espresso in XML stesso e può essere incorporato direttamente
nel documento: l'XML prevede dichiarazioni.
Un file XML può quindi essere autocontenuto: l'applicazione che lo ha
generato saprà come trattare in maniera più precisa i tag. Le altre applicazioni,
anche se non capiranno tutti i tag, saranno in grado di comprenderne almeno
il linea di massima la struttura. Questa libertà però ha alcune conseguenze,
che rende XML più rigido dell'HTML. Per cominciare, tutti i tag devono
essere accoppiati: <ARTICOLO>…</ARTICOLO> e così via. In HTML
esistono dei tag che non sono accoppiati. Per esempio <IMG SRC="mia.gif">.
In XML si deve scrivere <IMG SRC="mia.gif"></IMG> o meglio
usando la forma abbreviata <IMG SRC="mia.gif"/>. Per indicare che
un tag è isolato, ovvero non è accoppiato, lo si termina con />: questo
indica appunto che il tag comincia e finisce lì. In generale questo è
necessario: in XML non si hanno informazioni sui tag (che possono essere
quelli che si vogliono) per cui non è possibile stabilire se un tag è
singolo o abbia, magari molto più avanti, una chiusura. Un altro aspetto
da tenere in considerazione è la sintassi degli attributi. <TABLE
BORDER ALIGN=CENTER>, regolarissima in HTML, è sbagliata in XML: occorre
che ogni attributo abbia un valore, e che l'attributo sia specificato tra
virgolette, quindi <TABLE BORDER="2" ALIGN="CENTER">. Infine le entità:
l'HTML conosce un certo numero di entità: >; <; & ©
eccetera eccetera. L'XML non le conosce: conosce solo quelle numeriche
( eccetera) a meno di non dichiararle esplicitamente. Queste differenze
rendono ostico utilizzare direttamente documenti HTML già esistenti per
manipolarli con un parser XML. Comunque non è complicato XML-izzare documenti
HTML (almeno in casi semplici): in ditta utilizziamo degli script in Perl,
quick-and-dirty, che però svolgono egregiamente e rapidamente il compito
di "normalizzare" l'HTML. Attendo un convertitore generale, cosa meno semplice
di quello che potrebbe sembrare: le "schifezze" (perdonatemi il termine
ma è proprio così) che vengono prodotte dai vari generatori e filtri di
esportazione HTML sono terribili. La mancanza di uno standard ha costretto
ad adattarsi alle idiosincrasie dei vari browser, e la tolleranda agli
errori dei browser ha fatto lasciare molti bug (tanto si vede lo stesso).
Così ci si ritrova in documenti Word salvati come HTML orrori come paragrafi
aperti e non chiusi dentro celle di tabella o sequenze come <I><B>bla</I></B>
(notare che l'italico è chiuso prima del bold), che scombussolano ogni
parser di XML che si aspetta qualcosa di ordinato e regolare. Cosa che
in generale non è il caso di aspettarsi dai file di strana origine che
pullulano nella rete e nei nostri hard disk.
|