Il
processore XML
Un
processore XML è un modulo software utilizzato per leggere documenti
XML e verificare che soddisfino la specifica XML. La sua funzione principale
consiste nell’analisi e nella convalida dei dati XML. Un processore
XML fornisce anche il contenuto di un documento ad una eventuale applicazione;
questo vuol dire che una qualsiasi applicazione che deve interagire
con documenti XML deve avere al suo interno un processore XML. Un processore
può essere utilizzato in modo standalone, per verificare che
un documento appena scritto soddisfi la specifica XML, quindi che sia
o ben formattato (se non è accompagnato da nessun DTD) o valido
(se è accompagnato da DTD). È dunque uno strumento necessario
per chi scrive file XML in generale.
Per
indicare al processore a quale specifica un documento si riferisce bisogna
sempre indicare nella prima istruzione il numero di versione di tale
specifica:
Chiaramente
un processore segnala errore se riceve un documento con un numero di
versione che non supporta.
In
generale gli errori che un processore riporta sono di due tipi:
-
Error:
violazione di una regola della specifica; il processore notifica
all’applicazione l’errore rilevato e continua sia ad analizzare
il documento, sia a fornirne il contenuto all’applicazione; è
quest’ultima che deve decidere il comportamento rispetto all’errore
(ignorarlo, cercare di correggerlo, etc.).
Ad
esempio una violazione di un vincolo espresso in un DTD (chiaramente
non il DTD dell’XML, ma un DTD scritto dall’utente) è considerata
un "error"; una violazione di una regola di buona formattazione
è invece considerata un "Fatal error" (violare una
regola di buona formattazione vuol dire violare un vincolo espresso
nel DTD dell’XML).
Ci
sono due tipi di processori XML: validating e non-validating
(in genere un processore di tipo validating viene chiamato parser).
Sia i processori validating che quelli non-validating, devono riportare
le violazioni delle regole di buona formattazione incontrate nell’entità
documento ed in generale in una qualsiasi entità parsed. Un processore
validating deve anche riportare le violazioni dei vincoli espressi attraverso
le dichiarazioni nel DTD; per far questo deve poter leggere e processare
l’intero DTD. Un processore non-validating deve poter accedere all’intera
entità documento, incluso l’eventuale DTD interno (ma solo per
verificare che anche questa parte del documento sia ben formattata);
quest’ultimo fornisce vantaggi nelle prestazioni dato che non deve leggere
ed elaborare la DTD.
Allo
stato attuale sono disponibili alcuni processori di pubblico dominio
(shareware e freeware) che possono essere utilizzati in modo standalone.
La maggior parte degli elaboratori disponibili viene creata mediante
il linguaggio di programmazione Java e anche le applicazioni tendono
ad essere più lente rispetto alle applicazioni basate su C++;
Java consente spesso di utilizzare piattaforme multiple.
Per
controllare che gli esempi forniti in questa tesi fossero conformi alle
specifiche XML, ho utilizzato il processore fornito dalla Microsoft,
l’elaboratore Msxml. Microsoft Internet Explorer è dotato di
un elaboratore di XML incorporato. Questo elaboratore, Msxml, è
progettato come componente di Windows e può essere utilizzato
come controllo Active X nelle pagine Web o nelle applicazioni di Visual
Basic o C++. Microsoft ha inoltre contribuito allo sviluppo di un elaboratore
di XML su Java.