DTD - Atributos

En DTD, los atributos se declaran mediante la declaración ATTLIST.

Declarar atributos

La declaración de atributos utiliza la siguiente sintaxis:

<!ATTLIST nombreDeElemento nombreDeAtributo tipoDeAtributo valorPorDefecto>

Instancia de DTD:

<!ATTLIST payment type CDATA "check">

Instancia de XML:

<payment type="check" />

A continuación se muestra:Tipo de atributoOpciones del tipo:

Tipo Descripción
CDATA El valor debe ser datos de caracteres (character data)
(en1|en2|..) Este valor es uno de los valores en la lista de enumeración
ID El valor debe ser un id único
IDREF El valor debe ser el id de otro elemento
IDREFS La lista de valores debe ser de otros ids
NMTOKEN El valor debe ser un nombre XML válido
NMTOKENS El valor es una lista de nombres XML válidos
ENTITY El valor es una entidad
ENTITIES El valor es una lista de entidades
NOTATION Este valor es el nombre de un símbolo
xml: El valor es un valor XML predefinido

Los parámetros de valor por defecto pueden usar los siguientes valores:

Valor Explicación
Valor Valor por defecto del atributo
#REQUIRED El valor del atributo es obligatorio
#IMPLIED El atributo no es obligatorio
#FIXED valor El valor del atributo es fijo

Establecer un valor de atributo por defecto

DTD:

<!ELEMENT square EMPTY>
<!ATTLIST square width CDATA "0">

XML válido:

<square width="100" />

En el ejemplo anterior, "square" se define como un elemento vacío con el atributo "width" de tipo CDATA. Si el ancho no se establece, su valor por defecto es 0.

#IMPLIED

Sintaxis

<!ATTLIST nombre_de_elemento nombre_de_atributo tipo_de_atributo #IMPLIED>

Ejemplo

DTD:

<!ATTLIST contact fax CDATA #IMPLIED>

XML válido:

<contact fax="555-667788" />

XML válido:

<contact />

Si no desea forzar al autor a incluir el atributo y no tiene la opción de valor por defecto, utilice la palabra clave #IMPLIED.

#REQUIRED

Sintaxis

<!ATTLIST nombre_de_elemento nombre_de_atributo tipo_de_atributo #REQUIRED>

Ejemplo

DTD:

<!ATTLIST person number CDATA #REQUIRED>

XML válido:

<person number="5677" />

XML ilegal:

<person />

Si no tiene la opción de valor por defecto pero aún así desea forzar al autor a enviar el atributo, utilice la palabra clave #REQUIRED.

#FIXED

Sintaxis

<!ATTLIST nombre_de_elemento nombre_de_atributo tipo_de_atributo #FIXED "value">

Ejemplo

DTD:

<!ATTLIST sender company CDATA #FIXED "Microsoft">

XML válido:

<sender company="Microsoft" />

XML ilegal:

<sender company="W3School" />

Si desea que el atributo tenga un valor fijo y no permita que el autor lo cambie, utilice la palabra clave #FIXED. Si el autor utiliza un valor diferente, el analizador XML devolverá un error.

Enumeración de valores de atributo

Sintaxis:

<!ATTLIST nombre_de_elemento nombre_de_atributo (en1|en2|..) valor_por_defecto>

Ejemplo de DTD:

!ATTLIST payment type (check|cash) "cash">

Ejemplo de XML:

<payment type="check" />

O

<payment type="cash" />

Si desea que el valor del atributo sea uno de una serie de valores legales fijos, utilice valores de atributos enumerados.