ATTLIST (Elenco attributi)
L'istruzione ATTLIST è usata per elencare e dichiarare ciascun attributo che può appartenere a un elemento. Specifica innanzitutto il nome dell'elemento (o degli elementi) per i quali verrà applicato l'elenco di attributi. Quindi elenca ciascun attributo per nome, indicando se è obbligatorio, e specifica i dati di tipo carattere consentiti come valore per l'attributo.
Sintassi
<!ATTLIST elementName attributeName dataType default >
Parametri
elementName
Il nome dell'elemento a cui è applicato l'elenco di attributi.attributeName
Il nome di un attributo. È possibile ripetere questo parametro secondo le esigenze per elencare tutti gli attributi disponibili da usare con elementName.dataType
Il tipo di dati per l'attributo denominato nel parametro attributeName, che deve essere uno dei seguenti:CDATA - L'attributo contiene solo dati di tipo carattere.
Identificatore - Il valore dell'attributo deve essere univoco. Non è possibile ripeterlo in altri elementi o attributi usati nel documento.
IDREF - L'attributo fa riferimento al valore di un altro attributo del documento, relativo al tipo identificatore.
ENTITY - Il valore dell'attributo deve corrispondere al nome di un'entità ENTITY esterna non analizzata e dichiarata nella stessa DTD.
ENTITIES - Il valore dell'attributo contiene più nomi di entità esterne non analizzate dichiarate nella DTD.
NMTOKEN - Il valore dell'attributo deve essere un token del nome. Nel token del nome sono consentiti valori di dati, ma sono presenti più limitazioni rispetto a CDATA. Un token del nome può contenere lettere, numeri e alcuni segni di punteggiatura quali, ad esempio, punti, trattini, caratteri di sottolineatura e due punti. I valori del token del nome, tuttavia, non possono contenere alcun carattere di spaziatura.
NMTOKENS - Il valore dell'attributo contiene più token del nome. Per altre informazioni, vedere la descrizione di NMTOKEN e di Enumerato.
Enumerated - I valori dell'attributo sono limitati a quelli contenuti in un elenco enumerato. Viene eseguita un'analisi valida solo dei valori corrispondenti a quelli dell'elenco. Tutti i tipi di dati enumerati sono racchiusi tra parentesi e ciascun valore è separato da una barra verticale ("|").
predefiniti
Il valore predefinito dell'attributo denominato in attributeName. Nella tabella seguente sono descritti i valori predefiniti possibili.Valori predefiniti
Descrizione
#REQUIRED
L'attributo deve essere visualizzato nel documento XML oppure si verificherà un errore di analisi. Per evitare un errore di analisi in alcuni casi, è anche possibile usare il campo defaultValue subito dopo questa parola chiave.
#IMPLIED
L'attributo può essere presente nel documento XML ma, se omesso, non si verificherà un errore di analisi. In alternativa, a volte è possibile usare anche il campo defaultValue che segue direttamente questa parola chiave.
#FIXED
L'attributo presenta un valore fisso nella DTD e non può essere modificato o sovrascritto nel documento XML. Se si usa questa parola chiave, è necessario usare anche il campo defaultValue subito dopo questa parola chiave per dichiarare il valore fisso dell'attributo.
defaultValue
Un valore fisso o predefinito. Questo valore viene inserito nel documento XML se l'attributo è mancante o se non viene usato nel documento XML. È necessario racchiudere tutti i valori tra virgolette (doppie o singole).
Nota
Per ogni dichiarazione ATTLIST impostata nella DTD, è necessario usare solo un'occorrenza di elementName.I parametri attributeName, dataType e default definiscono ciascun attributo dell'elenco e possono essere ripetuti secondo le esigenze finché non sono stati elencati e definiti tutti gli attributi disponibili da usare con elementName.
Esempio
In questo esempio viene dichiarato quanto segue per l'elemento <book>:
Un attributo publisher facoltativo che può contenere dati di tipo carattere.
Un attributo reseller il cui valore è impostato su "MyStore".
Un attributo ISBN richiesto che deve contenere un valore di identificazione univoco per ogni elemento <book> nel documento XML.
Un attributo InPrint richiesto che deve contenere il valore "yes" o "no". Se il valore non è impostato in modo esplicito nel documento XML, per impostazione predefinita viene applicato il valore "yes".
<!ATTLIST book
publisher CDATA #IMPLIED
reseller CDATA #FIXED "MyStore"
ISBN ID #REQUIRED
inPrint (yes|no) "yes"
>