DTD - Attributi

In questo capitolo discuteremo degli attributi DTD. Attributo fornisce più informazioni su un elemento o più precisamente definisce una proprietà di un elemento. Un attributo XML ha sempre la forma di una coppia nome-valore. Un elemento può avere un numero qualsiasi di attributi univoci.

La dichiarazione degli attributi è molto simile alle dichiarazioni degli elementi in molti modi tranne uno; invece di dichiarare il contenuto consentito per gli elementi, dichiari un elenco di attributi consentiti per ogni elemento. Questi elenchi sono chiamati dichiarazione ATTLIST.

Sintassi

La sintassi di base della dichiarazione degli attributi DTD è la seguente:

<!ATTLIST element-name attribute-name attribute-type attribute-value>

Nella sintassi sopra -

  • Gli attributi DTD iniziano con la parola chiave <! ATTLIST se l'elemento contiene l'attributo.

  • element-name specifica il nome dell'elemento a cui si applica l'attributo.

  • attribute-name specifica il nome dell'attributo che è incluso con il nome dell'elemento.

  • attribute-typedefinisce il tipo di attributi. Discuteremo di più su questo nelle sezioni seguenti.

  • attribute-valueassume un valore fisso che gli attributi devono definire. Discuteremo di più su questo nelle sezioni seguenti.

Esempio

Di seguito è riportato un semplice esempio per la dichiarazione degli attributi in DTD:

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">Tanmay Patil</name>
</address>

Esaminiamo il codice sopra -

  • Inizia con la dichiarazione XML con la seguente istruzione:

<?xml version = "1.0"?>
  • Immediatamente dopo l'intestazione XML c'è la dichiarazione del tipo di documento, comunemente indicato come DOCTYPE come mostrato di seguito -

    Il DOCTYPE informa il parser che un DTD è associato a questo documento XML. La dichiarazione DOCTYPE ha un punto esclamativo (!) All'inizio del nome dell'elemento.

<!DOCTYPE address [
  • Di seguito è riportato il corpo del DTD. Qui abbiamo dichiarato elemento e attributo -

<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
  • L' ID attributo per il nome dell'elemento è definito come indicato di seguito:

    Qui il tipo di attributo è CDATA e il suo valore è #REQUIRED .

<!ATTLIST name id CDATA #REQUIRED>

Regole di dichiarazione degli attributi

  • Tutti gli attributi utilizzati in un documento XML devono essere dichiarati nella DTD (Document Type Definition) utilizzando una dichiarazione elenco attributi

  • Gli attributi possono apparire solo nei tag iniziali o vuoti.

  • La parola chiave ATTLIST deve essere in lettere maiuscole

  • Nessun nome di attributo duplicato sarà consentito all'interno dell'elenco di attributi per un dato elemento.

Tipi di attributi

Quando si dichiarano gli attributi, è possibile specificare come il processore deve gestire i dati che appaiono nel valore. Possiamo classificare i tipi di attributi in tre categorie principali:

  • Tipo di stringa

  • Tipi tokenizzati

  • Tipi enumerati

La tabella seguente fornisce un riepilogo dei diversi tipi di attributi:

Sr.No. Tipo e descrizione
1

CDATA

CDATA sono dati di caratteri (testo e non markup). È un tipo di attributo stringa .

2

ID

È un identificatore univoco dell'attributo. Non dovrebbe apparire più di una volta. È un tipo di attributo tokenizzato .

3

IDREF

Viene utilizzato per fare riferimento a un ID di un altro elemento. Viene utilizzato per stabilire connessioni tra gli elementi. È un tipo di attributo tokenizzato .

4

IDREFS

Viene utilizzato per fare riferimento a più ID. È un tipo di attributo tokenizzato .

5

ENTITY

Rappresenta un'entità esterna nel documento. È un tipo di attributo tokenizzato .

6

ENTITIES

Rappresenta un elenco di entità esterne nel documento. È un tipo di attributo tokenizzato .

7

NMTOKEN

È simile a CDATA e il valore dell'attributo è costituito da un nome XML valido. È un tipo di attributo tokenizzato .

8

NMTOKENS

È simile a CDATA e il valore dell'attributo consiste in un elenco di nomi XML validi. È un tipo di attributo tokenizzato .

9

NOTATION

Un elemento farà riferimento a una notazione dichiarata nel documento DTD. È un tipo di attributo enumerato .

10

Enumeration

Consente di definire un elenco specifico di valori in cui uno dei valori deve corrispondere. È un tipo di attributo enumerato .

Dichiarazione del valore dell'attributo

All'interno di ogni dichiarazione di attributo, è necessario specificare come apparirà il valore nel documento. È possibile specificare se un attributo -

  • può avere un valore predefinito

  • può avere un valore fisso

  • è obbligatorio

  • è implicito

Valori standard

Contiene il valore predefinito. I valori possono essere racchiusi tra virgolette singole (') o doppie (").

Syntax

La seguente è la sintassi del valore:

<!ATTLIST element-name attribute-name attribute-type "default-value">

dove valore-predefinito è il valore dell'attributo definito.

Example

Di seguito è riportato un semplice esempio di dichiarazione di attributo con valore predefinito:

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA "0">
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

In questo esempio abbiamo un elemento nome con ID attributo il cui valore predefinito è 0 . Il valore predefinito è stato racchiuso tra virgolette doppie.

Valori FISSI

La parola chiave #FIXED seguita dal valore fisso viene utilizzata quando si desidera specificare che il valore dell'attributo è costante e non può essere modificato. Un uso comune di attributi fissi è la specifica dei numeri di versione.

Syntax

Di seguito è riportata la sintassi dei valori fissi:

<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >

dove #FIXED è un valore di attributo definito.

Example

Di seguito è riportato un semplice esempio di dichiarazione di attributo con valore FIXED -

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "tutorialspoint">we are a free online teaching faculty</company>
</address>

In questo esempio abbiamo utilizzato la parola chiave #FIXED dove indica che il valore "tutorialspoint" è l'unico valore per il nome dell'attributo dell'elemento <company>. Se proviamo a modificare il valore dell'attributo, viene visualizzato un errore.

Di seguito è riportato un DTD non valido -

<?xml version = "1.0"?>

<!DOCTYPE address [
  <!ELEMENT address (company)*>
  <!ELEMENT company (#PCDATA)>
  <!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>

<address>
  <company name = "abc">we are a free online teaching faculty</company>
</address>

Valori RICHIESTI

Ogni volta che si desidera specificare che è richiesto un attributo, utilizzare la parola chiave #REQUIRED.

Syntax

Di seguito è riportata la sintassi di #REQUIRED -

<!ATTLIST element-name attribute-name attribute-type #REQUIRED>

dove #REQUIRED è un tipo di attributo definito.

Example

Di seguito è riportato un semplice esempio di dichiarazione dell'attributo DTD con la parola chiave #REQUIRED -

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #REQUIRED>
]>

<address>
   <name id = "123">
      Tanmay Patil
   </name>
</address>

In questo esempio abbiamo usato parola chiave #REQUIRED per specificare che l'attributo id deve essere fornito per l'elemento nome- nome

Valori IMPLICITI

Quando si dichiarano gli attributi, è sempre necessario specificare una dichiarazione di valore. Se l'attributo che si sta dichiarando non ha un valore predefinito, non ha un valore fisso e non è obbligatorio, è necessario dichiarare che l'attributo è implicito . La parola chiave #IMPLIED viene utilizzata per specificare un attributo come implicito .

Syntax

Di seguito è riportata la sintassi di #IMPLIED -

<!ATTLIST element-name attribute-name attribute-type #IMPLIED>

dove #IMPLIED è un tipo di attributo definito.

Example

Di seguito è riportato un semplice esempio di #IMPLIED

<?xml version = "1.0"?>

<!DOCTYPE address [
   <!ELEMENT address ( name )>
   <!ELEMENT name ( #PCDATA )>
   <!ATTLIST name id CDATA #IMPLIED>
]>

<address>
   <name />
</address>

In questo esempio abbiamo utilizzato la parola chiave #IMPLIED poiché non vogliamo specificare alcun attributo da includere nel nome dell'elemento . È facoltativo.