DTD - Atributos



En este captulo hablaremos sobre los atributos de la definicin del tipo de documento o DTD (siglas en ingls de 'document type definition'). Los atributos dan ms informacin sobre un elemento o para ser ms precisos, define una propiedad de un elemento. Un atributo del lenguaje de marcas extensible o XML (de sus siglas en ingls para 'eXtensible Markup Language') siempre lo encontramos en forma de 'name-value pair'. Un elemento puede tener muchos o pocos atributos nicos.

La declaracin de atributos es muy similar a la declaracin de elementos en muchos sentidos, excepto en uno; en vez de declarar contenido permitido para elementos, se declara una lista de atributos permitidos para cada elemento. Estas listas se denominan declaracin 'ATTLIST' (de lista de atributos).

Sintaxis

La sintaxis bsica de la declaracin de atributos DTD debe ser como se explicita a continuacin:

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

En la sintaxis de la parte superior

  • Los atributos DTD empiezan con <!ATTLIST palabra claves si el elemento contiene el atributo.

  • nombre del elemento especifica el nombre del elemento al que se aplica el atributo.

  • nombre del atributo especifica el nombre del atributo que se incluye con el nombre del elemento.

  • tipo de atributo define el tipo de atributo. Hablaremos de este apartado en las siguientes secciones.

  • valor del atributo toma un valor fijo que el atributo debe definir. Hablaremos ms sobre este asunto en las siguientes seccines.

Ejemplo

Debajo podran encontrar un ejemplo sencillo para la declaracin de atributo en 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>

Vayamos por medio del cdigo que veremos a continuacin:

  • Empiece con la declaracin XML con lo siguiente:

    <?xml version = "1.0"?>
    
  • Immediatamente siguiendo el encabezado de XML encontrar la declaracin del tipo de documento, generalmente referido as el tipo de documento:

    <!DOCTYPE address [
    

    El tipo de documento (DOCTYPE) informa al analizador (parser) ique el DTD est asociado a este documento XML. La declaracin DOCTYPE tiene un signo de exclamacin (!) al inicio del nombre del elemento.

  • A continuacin est el cuerpo del DTD. Se han declarado elementos y atributos:

    <!ELEMENT address ( name )>
    <!ELEMENT name ( #PCDATA )>
    
  • Atributo identificacin para el elemento nombre se define como:

    <!ATTLIST name id CDATA #REQUIRED>
    

    Aqu el tipo de atributo es CDATA (datos formados por caracteres) y su valor es #REQUERIDO.

Normas para la declaracin de atributos

  • Todos los atributos que se usan en un documento XML deben declararse en el documento DTD usando una declaracin de lista de tributos (Attribute-List Declaration).

  • Los atributos puede que solo aparezcan al inicio o en una etiqueta vaca.

  • La lista de atributos claves debe especificarse en maysculas

  • No se permitirn nombres de atributos repetidos en la lista de atributos para un elemento determinado.

Tipos de atributos

Cuando se declaran los atributos, se puede especificar cmo el procesador usar los datos que aparezcan en el valor. Se puede dividir la tipologa de atributos en tres categoras:

  • Tipo de cadena

  • Tipologa de caso (en ingls token)

  • Tipos enumerados

La tabla siguiente aporta una sntesis de los diferentes tipos de atributos:

Tipo Descripcin
CDATA

CDATA es un caracter de datos (texto y no revisin). Es un tipo de atributo de cadena.

Identificacin (ID)

Es el nico identificador del atributo. No debe aparecer ms de una vez. Es un Tipo de atributo de caso .

IDREF

Se usa para hacer referencia a la identidad de otro elemento. Se utiliza para establecer conexiones entre los elementos. Es un Tipo de atributo de caso.

IDREFS

Se usa para referenciar mltiples identidades. Es un Tipo de aributo de caso.

ENTIDAD

Representa un entidad externa en el documento. Es un Tipo de atributo de caso.

ENTIDADES

Representa una lista de entidades externas en el documento. Es un Tipo de atributo de caso.

NMTOKEN

Es similar al CDATA y el valor del atributo consiste de un nombre XML vlido. Es un Tipo de atributo de caso.

NMTOKENS

Es similar al CDATA y el valor del atributo consiste en una lista nombres XML vlidos. Es unTipo de atributo de caso.

ANOTACIN

Un elemento ser referenciado a una anotacin declarada en el documento DTD. Es un Tipo de atributo enumerado.

Enumeracin

Permite definir un aspecto de la lista de valores donde uno de los valores debe coincidir. Es un Tipo de atributo enumerado.

Declaracin del valor del atributo

En cada declaracin de atributo, se debe especificar cmo aparecer el valor en el documento. Se puede especificar si un atributo:

  • pueden tener un valor predeterminado

  • un valor fijo

  • se requiere

  • se asume

Valores predeterminados

Contiene un valor predeterminado. Los valores se pueden rodear con comillas independientes (') o dobles(")

Sintaxis

A continacin se muestra el valor sintctico:

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

donde el valor predeterminado el valor del atributo es definido.

Ejemplo

A continuacin se expone un sencillo ejemplo de una declaracin de atributo con valor predeterminado:

<?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>

En este ejemplo tenemos nombre elemento con atributo id el valor predeterminado del cual es 0. El valor predeterminado se envuele con doble comilla.

Valores fijos

#palabras clave fijas seguidas del valor fijo se usan cuando se quiere especificar que el valor del atributo es constante y no se puede cambiar. Un uso comn de atributos fijos se da especificando nmeros de versin.

Sintaxis

A continuacin se muestra la sintaxis de los valores fijos:

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

dnde #FIXED (fijo) es un valor definido del atributo.

Ejemplo

A continuacin tenemos un sencillo ejemplo de declaracin de atributo con valor fijo:

<?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>

En este ejemplo hemos utilizado la palabra clave #FIXED donde se indica que el valor "tutorialspoint" es el nico valor para el atributo nombre de elemento <company>. Si intentamos cambiar el valor del atributo nos da error.

A continuacin tenemos un DTD invlido:

<?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>

valores requeridos

Cuando se quiera especificar la necesidad de un atributo, se debe usar la palabra clave #REQUIRED.

Sintaxis

A continuacin se encuentra la sintaxis de #REQUIRED:

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

donde #REQUIRED es un tipo de atributo definido.

Ejemplo

A continuacin vemos un simple ejemplo de declaracin de atributo de DTD con palabra clave #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>

En este ejemplo hemos usado la palabra clave #REQUIRED para especificar que el atributo identidad se debe aportard para el nombre del elemento nombre

Valores IMPLIED(asumidos/sobreentendidos)

Cuando se declaran los atributos siempre se debe especificar una declaracin de valor. Si el atributo que se declara no tiene un valor predeterminado, no tiene valor fijo, ni es requerido, entonces hay que declarar el atributo como sobreentendido. La palabra clave #IMPLIED se usa para especificar un atributo como sobreentendido.

Sintaxis

A continuacin se muestra la sintaxis de #IMPLIED:

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

donde #IMPLIED es un tipo de atributo definido.

Ejemplo

A continuacin encontramos un simple ejemplo de #IMPLIED

<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #IMPLIED>
 ]>
<address>
   <name />
</address>

En este ejemplo hemos usado la palabra clave #IMPLIED ya que no nos interesa especificar ningn atributos para ser incluido en elemento nombre. Es opcional.

Advertisements