eXtensible Markup Language Tutorial - by Marco Giannì
Capitolo II: Struttura e sintassi

Struttura fisica del linguaggio XML

La struttura fisica di un documento XML è costituita da tutto il contenuto del documento stesso. Le unità di memorizzazione definite entità, possono essere parte integrante del documento o possono essere esterne. Ogni entità è identificata da un nome univoco e da un contenuto specifico che può essere costituito da un singolo carattere all'interno del documento o da un file esterno di grandi dimensioni. In termini di struttura logica di un documento XML, le entità vengono dichiarate nel prologo e viene loro fatto riferimento nell'elemento Document.

Dopo aver dichiarato la DTD, l'entità può essere utilizzata in un punto qualsiasi del documento. Un riferimento di entità indica all'elaboratore di recuperare il contenuto di un'entità, come stabilito dalla dichiarazione di entità, e di utilizzarla all'interno del documento.

ENTITA' ANALIZZABILI E NON ANALIZZABILI

Un'entità può essere analizzabile o non analizzabile. Per entità analizzabile si intende un'entità in grado di essere letta dall'elaboratore di XML che ne consente l'estrazione. Al termine dell'estrazione, questo tipo di entità viene visualizzata come parte del testo del documento nella posizione di riferimento dell'entità stessa. Ad esempio, una dichiarazione del tipo analizzabile potrebbe essere questa :

<!ENTITY LR1 "light requirement: mostly shade">

Ogni volta che nel documento viene fatto riferimento a questa entità, quest'ultima verrà sostituita dal contenuto. Se si desidera modificare il contenuto dell'entità, è necessario effettuare questa operazione solo nella dichiarazione e la modifica si rifletterà in qualsiasi punto del documento in cui venga utilizzata l'entità.

RIFERIMENTI DI ENTITA' Il contenuto di ogni entità viene aggiunto al documento ogni volta che viene fatto riferimento a quell'entità. Il riferimento ha la funzione di segnaposto per l'autore del contenuto e l'elaboratore di XML colloca il contenuto effettivo nei punti di riferimento. Per includere un riferimento, bisogna inserire una e commerciale (&) e immettere il nome dell'entità seguito da punto e virgole (;). All'interno di un documento assumerebbe il seguente aspetto:

<TERM>Wild Ginger has the following &LR1;</TERM>

RIFERIMENTI DI ENTITA' DI PARAMETRO Un altro tipo di riferimento è quello relativo all'entità di parametro che utilizza un modulo (%) invece di una e commerciale anche se l'aspetto è simile a qualsiasi altro riferimento di entità. %CDF; è un esempio di entità di parametro.

Un'entità non analizzabile viene indicata talvolta come entità binaria in quanto il contenuto è spesso costituito da un file binario, ad esempio un'immagine, che non può essere interpretato direttamente dall'elaboratore XML. Un'entità non analizzabile richiede informazioni diverse da quelle incluse in un'entità analizzabile. Viene richiesta un'annotazione che identifica il formato o il tipo di risorsa per cui l'entità viene dichiarata. Ad esempio :

<!ENTITY MyImage SYSTEM "Image001.gif" NDATA GIF>

Questa dichiarazione significa che l'entità MyImage è un file binario nell'annotazione GIF. Perché queste dichiarazione di entità siano valide, anche l'annotazione deve essere dichiarata. La dichiarazione di annotazione consente all'applicazione di XML di gestire i file binari esterni. Nel caso dell'annotazione GIF utilizzata nell'esempio, può essere impiegata la dichiarazione di annotazione seguente:

<!NOTATION GIF SYSTEM "/Utils/Gifview.exe">

Questa stringa di codice indica all'elaboratore di XML di utilizzare Gifview.exe per elaborare l'entità di tipo GIF ogni volta che viene rilevata. Dopo essere stata dichiarata, la dichiarazione di annotazione può essere utilizzata all'interno del documento.

ENTITA' PREDEFINITE

Nel linguaggio XML alcuni caratteri sono utilizzati per contrassegnare il documento in modo specifico. Le parentesi angolari (<>) e la barra (/) sono interpretate come markup e non come dati di un carattere effettivo:

<PLANT>Blodroot</PLANT>

Questi e altri caratteri sono riservati per il markup e non possono essere utilizzati come contenuto. Se si desidera che questi caratteri siano visualizzati come dati, è necessario utilizzare determinati codici:

&lt; < (parentesi angolare di apertura)

&gt; > (parentesi angolare di chiusura)

&amp ; & (e commerciale)

&apos; ' (apostrofo)

&quot; " (virgolette doppie)

ENTITA' INTERNE ED ESTERNE

Nel primo caso si tratta di un'entità in cui non esistono unità di memorizzazione fisica separate e il cui contenuto viene fornito nella dichiarazione corrispondente, ad esempio:

<!ENTITY LR1 "light requirement: mostly shade">

Un'entità esterna fa riferimento a un'unità di memorizzazione nella dichiarazione mediante un identificatore pubblico o di sistema. L'identificatore di sistema fornisce un collegamento alla posizione in cui si trova il contenuto dell'entità, ad esempio un URI (Uniform Resource Identifier) come ad esempio:

<!ENTITY MyImage SYSTEM "http://www.wildflowers.com/Image001.gif" NDATA GIF>

In questo caso l'elaboratore di XML deve necessariamente leggere il file Image001.gif per recuperare il contenuto di questa entità.

Oltre all'identificatore di sistema, l'entità può includere un identificatore pubblico che fornisce un metodo opzionale e alternativo per il recupero del contenuto di un'entità da parte dell'elaboratore di XML. Questo identificatore può essere ad esempio utilizzato se l'applicazione è collegata a una libreria del documento disponibile pubblicamente. Se l'elaboratore non è in grado di generare una posizione appropriata per l'identificatore pubblico, è necessario che venga controllato l'URI specificato dall'identificatore di sistema. Ad esempio:

<!ENTITY MyImage PUBLIC "-//Wildflowers/TEXT Standard images//EN"
 "http://www.wildflowers.com/Image001.gif"
 NDATA GIF>

L'elaboratore di XML verifica l'identificatore pubblico all'interno di un elenco di risorse a cui è collegato e scoprire che non è necessaria una nuova copia dell'entità perché già disponibile localmente.

<indietro home page avanti>

Copyright © 2000-2005. Tutti i diritti sono riservati. Per informazioni: mgianni@infinito.it