Ritornando al paragone fra XML ed il filesystema del nostro PC, sappiamo bene che è possibile inserire un file in una cartella, ma non un file dentro un altro file. Nell'insieme delle parti componenti un filesystem le cartelle ed i file appartengono a due classi separate, caratterizzate da proprietà diverse:
Alla classe generica "parte del filesystem" sono associate diverse proprietà possedute da tutti i suoi appartenenti:
- attributi (ad esempio il nome dell'elemento);
- metodi: le operazioni possibili sull'oggetto (ad esempio il copia/incolla).
Le due sottoclassi "cartelle" e "file" ereditano dalla classe più generale questi attributi e metodi per ognuno dei propri appartenenti e ne aggiungono di ulteriori, più specifici.
Classi, oggetti, attributi, metodi ed eredità sono i concetti di base del modo di ragionare "object oriented" (orientato agli oggetti), utilizzato dai più moderni linguaggi di programmazione. Se vogliamo utilizzare un file XML con tali linguaggi dobbiamo essere in grado di descriverlo in termini ad oggetti, come abbiamo appena abbozzato per il filesystem. La descrizione corretta e ufficiale è stata proposta dal W3C (l'ente che cura gli standard di Internet) ed è detta interfaccia DOM (Document Object Model).
Perché abbiamo definito il DOM "interfaccia"? Quando il parserizzatore ha letto il nostro file XML e ci ha restituito un oggetto utilizzabile nel codice del programma, a noi non interessa quali e quante variabili siano state utilizzate per crearlo.
L'unica nostra preoccupazione è che l'interfaccia dell'oggetto (cioè i metodi e gli attributi) con il resto del codice sia aderente alle regole DOM.
Ecco quindi lo schema finale della chiamata, nel codice di un programma, di un oggetto XML parserizzato secondo le specifiche DOM:
Nel paragrafo successivo vedremo nel dettaglio i componenti dell'interfaccia DOM. Il codice utilizzato è universale, perché la forma di attributi e metodi di DOM dovrebbe essere valida indipendentemente dal linguaggio con cui lavorate. Gli esempi pratici in Javascript si possono trovare nel capitolo 2, ordinati per tipo di operazione.