Ricerca…
Osservazioni
Dal punto di vista dello storage, un documento XML è costituito da entità. Una delle entità è l'entità documento, che è il documento XML principale stesso.
Le entità possono essere classificate in questo modo (ordinate in modo decrescente in ordine decrescente di utilizzo):
- entità documento : questo è il file XML principale.
- entità generali interne : questa è la più comune oltre all'entità documento e di cui è a conoscenza la maggior parte degli utenti XML. Spesso, la parola entità è usata casualmente per loro. Permettono di specificare alcune scorciatoie per testi sostitutivi più lunghi nel contenuto del documento. Sono dichiarati nella DTD.
- il sottoinsieme DTD esterno : un altro file in cui parte del DTD è esternalizzata.
- entità parametro : scorciatoie, da usare nella DTD.
- entità generali parsed esterne : sono frammenti XML memorizzati in altri file.
- entità non analizzate : possono trattarsi di file su cui XML non pone restrizioni, incluse immagini, suoni, ecc.
In molti casi, un documento XML è costituito esclusivamente dall'entità del documento.
Entità generali predefinite
XML pre-definisce cinque entità generali che possono essere utilizzate senza dichiararle:
& " ' < >
Sono associati ai nomi amp
, quot
, apos
, lt
e gt
.
<?xml version="1.0"?>
<entities>
& is an ampersand.
" is a quote.
' is an apostrophe.
< is a lower-than sign.
> is a greater-than sign.
</entities>
Entità generali (interne) definite dall'utente
È possibile definire le proprie entità generali. La dichiarazione si verifica nel sottoinsieme DTD, con un nome e il testo sostitutivo associato.
Può quindi essere utilizzato nel documento usando la sintassi di riferimento dell'entità &...;
, sia nel testo, sia nei valori degli attributi.
<?xml version="1.0"?>
<!DOCTYPE my-document [
<!ENTITY my-entity "This is my entity">
]>
<my-document>
The entity was declared as follows: &my-entity;
<element attribute="Entity: &my-entity;"/>
</my-document>
Entità parsed esterne
I frammenti XML, noti anche sotto il nome di entità parsed esterne , possono essere archiviati in file separati.
I frammenti XML, a differenza dei documenti XML, sono meno restrittivi, in quanto diversi elementi possono apparire di livello superiore, oltre a nodi di testo. Come un documento XML, un'entità analizzata esterna può iniziare con una dichiarazione XML, ma questa dichiarazione non è considerata parte del testo sostitutivo.
Questo è un esempio di entità parsed esterna:
<?xml version="1.0" encoding="UTF-8"?>
This is some text
<element/>
<element/>
Un'entità parsed esterna può quindi essere dichiarata in un documento XML, nella DTD, e può essere utilizzata con un riferimento di entità, che ha la stessa sintassi delle entità interne generali:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<root>
&fragment;
</root>
Con il riferimento all'entità risolto, questo documento è equivalente a:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY fragment SYSTEM "fragment.xml">
]>
<root>
This is some text
<element/>
<element/>
</root>
Ogni tag di elemento di apertura in un'entità analizzata esterna deve avere un tag di fine corrispondente: non è consentito distribuire singoli elementi su più entità, né per diffondere markup.
È necessario un parser di convalida per risolvere il riferimento all'entità e includere il testo sostitutivo nel documento come sopra. Un parser non validante può saltare questo, e invece dire all'applicazione consumante che esiste un riferimento non risolto a un'entità analizzata esterna.