ENTITY
L'istruzione ENTITY
viene utilizzata per definire entità nella DTD, sia per l'uso nei documenti XML associati alla DTD che nella DTD stessa. Una ENTITY fornisce una voce abbreviata da posizionare nel documento XML. Il nome abbreviato è ciò che si inserisce come parametro di nome. Le istruzioni ENTITY consentono di ripetere informazioni o grandi blocchi di testo che possono essere archiviati in file separati. Il nome abbreviato è seguito da ; nel documento XML (&abbName;)
Di seguito è riportato un esempio in cui istruzioni ENTITY vengono utilizzate in una DTD e in un file XML.
longtext.txt
Di seguito è illustrato il contenuto del file longtext.txt:
<definition>ATTLIST(attribute list) Declares a list of XML attributes. These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.
</definition>
dtd_chunk.dtd
sample.dtd
Quando si analizza il documento DTD, si ottengono i risultati seguenti. Si noti che la sostituzione avviene solo in memoria. Il parser non modifica effettivamente il file.
sample.xml
Risultato del documento XML analizzato
Quando si analizza il documento XML, si ottengono i risultati seguenti:
Definition list for eXtensible Markup Language attributes used in DTD files.
top file
ATTLIST(attribute list) Declares a list of XML attributes. These attributes are qualified by name, data type, implied default values, and the name of any elements that permit their use.
Conclusion of definition list for eXtensible Markup Language attributes.
Sintassi
<!ENTITY [%] name [SYSTEM|PUBLIC publicID] resource [NDATA notation] >
Parametri
- name
Nome dell'entità. Richiesto per tutte le definizioni di entità.
- IDpubblico
L'identificatore pubblico per l'entità. Richiesto solo se la dichiarazione utilizza la parola chiave PUBLIC.
- risorsa
Il valore per l'entità. Richiesto per tutte le definizioni di entità. Nel caso di entità interne, questa è una stringa di testo analizzata ed espansa. Le entità esterne, quali il nome o il tipo di file, vengono identificate da un URI (Uniform Resource Identifier).
- notation
Il nome di una notazione dichiarato in un punto diverso della DTD utilizzando l'istruzione NOTATION. Obbligatorio solo quando un'entità non analizzata viene dichiarata con la parola chiave dei dati non XML (NDATA).
Esempi
Entità generale (interna analizzata)
Nell'esempio seguente viene dichiarata un'entità generale interna alla quale si può fare riferimento come öaut;
e &xml;
in documenti XML che utilizzano la DTD.
<!ENTITY oumlaut "&#246;">
oppure un esempio di sostituzione di testo semplice è il seguente
<!ENTITY xml "eXtensible Markup Language">
Il parser XML espande il valore di entità non elaborato (&#246;) per includerlo nel documento XML interno. Nell'output finale del documento analizzato il valore "&" viene utilizzato per creare il carattere "&" e il valore è presente nel documento XML come "ö".
Entità parametro (interna analizzata)
Nell'esempio seguente viene dichiarata un'entità parametro interna alla quale si può fare riferimento come %lists;
in punti diversi della DTD. Questo consente più riferimenti agli elementi di elenco XHTML, <ul>
e <ol>
.
<!ENTITY % lists "ul | ol">
Entità esterna non analizzata
Nell'esempio seguente viene dichiarata un'entità esterna non analizzata che consente di codificare i collegamenti a dati non XML (in questo caso un file di immagine in formato GIF) da includere nel documento XML.
<!ENTITY file_pic SYSTEM "file.jpg" NDATA jpg>
In questo caso, l'uso della parola chiave NDATA
richiede anche l'utilizzo di una dichiarazione NOTATION
per una notazione denominata "jpg". Per ulteriori informazioni, vedere NOTATION.
Note
Le istruzioni ENTITY possono essere utilizzate in diversi modi. Se non si è sicuri su come definire un'entità, le seguenti domande possono aiutare a comprendere le diverse condizioni per l'utilizzo delle entità che si dichiarano nella DTD:
Il valore dell'entità serve solo per abbreviare una lunga stringa di testo che potrebbe cambiare durante il ciclo di vita del documento? In questo caso utilizzare un'entità generale.
L'entità verrà utilizzata come puntatore a qualcosa di esterno alla DTD o al documento XML (ad esempio entità esterne), come un nome di file o un tipo MIME? In questo caso utilizzare un'entità esterna non analizzata.
Il valore URI dell'entità deve essere analizzato (ovvero espanso come parte della DTD o di un documento XML che lo utilizza) oppure rimane non analizzato (ovvero il parser XML ne ometterà il contenuto dal documento finale analizzato)?
Se analizzato, il contenuto dell'entità espansa verrà incluso nel documento XML che utilizza la DTD (entità generali) oppure verrà incluso nella DTD stessa (entità parametro)?