DTD - Atributos


Anuncios


En este cap铆tulo hablaremos sobre los atributos de la definici贸n del tipo de documento o DTD (siglas en ingl茅s de 'document type definition'). Los atributos dan m谩s informaci贸n sobre un elemento o para ser m谩s precisos, define una propiedad de un elemento. Un atributo del lenguaje de marcas extensible o XML (de sus siglas en ingl茅s para 'eXtensible Markup Language') siempre lo encontramos en forma de 'name-value pair'. Un elemento puede tener muchos o pocos atributos 煤nicos.

La declaraci贸n de atributos es muy similar a la declaraci贸n 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 declaraci贸n 'ATTLIST' (de lista de atributos).

Sintaxis

La sintaxis b谩sica de la declaraci贸n de atributos DTD debe ser como se explicita a continuaci贸n:

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

En la sintaxis de la parte superior

  • Los atributos DTD empiezan con <!una lista de atributos (ATTLIST) 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 m谩s sobre este asunto en las siguientes secci贸nes.

Ejemplo

Debajo podran encontrar un ejemplo sencillo para la declaraci贸n 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 c贸digo que veremos a continuaci贸n:

  • Empiece con la declaraci贸n XML con lo siguiente:

    <?xml version = "1.0"?>
    
  • Immediatamente siguiendo el encabezado de XML encontrar谩 la declaraci贸n 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 declaraci贸n DOCTYPE tiene un signo de exclamaci贸n (!) al inicio del nombre del elemento.

  • A continuaci贸n est谩 el cuerpo del DTD. Se han declarado elementos y atributos:

  • <!ELEMENT address ( name )>
    <!ELEMENT name ( #PCDATA )>
    
  • Atributo identificaci贸n 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 declaraci贸n de atributos

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

  • Los atributos puede que solo aparezcan al inicio o en una etiqueta vac铆a.

  • La lista de atributos claves debe especificarse en may煤sculas

  • No se permitir谩n nombres de atributos repetidos en la lista de atributos para un elemento determinado.

Tipos de atributos

Cuando se declaran los atributos, se puede especificar c贸mo el procesador usar谩 los datos que aparezcan en el valor. Se puede dividir la tipolog铆a de atributos en tres categor铆as:

  • Tipo de cadena

  • Tipolog铆a de caso (en ingl茅s token)

  • Tipos enumerados

La tabla siguiente aporta una s铆ntesis de los diferentes tipos de atributos:

Tipo Descripci贸n
CDATA

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

Identificaci贸n (ID)

Es el 煤nico identificador del atributo. No debe aparecer m谩s 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 m煤ltiples 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 v谩lido. Es un Tipo de atributo de caso.

NMTOKENS

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

ANOTACI脫N

Un elemento ser谩 referenciado a una anotaci贸n declarada en el documento DTD. Es un Tipo de atributo enumerado.

Enumeraci贸n

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

Declaraci贸n del valor del atributo

En cada declaraci贸n de atributo, se debe especificar c贸mo 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 continaci贸n se muestra el valor sint谩ctico:

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

donde el valor predeterminado el valor del atributo es definido.

Ejemplo

A continuaci贸n se expone un sencillo ejemplo de una declaraci贸n 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 com煤n de atributos fijos se da especificando n煤meros de versi贸n.

Sintaxis

A continuaci贸n 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 continuaci贸n tenemos un sencillo ejemplo de declaraci贸n 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 continuaci贸n tenemos un DTD inv谩lido:

<?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 continuaci贸n se encuentra la sintaxis de #REQUIRED:

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

donde #REQUIRED es un tipo de atributo definido.

Ejemplo

A continuaci贸n vemos un simple ejemplo de declaraci贸n 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 declaraci贸n 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 continuaci贸n se muestra la sintaxis de #IMPLIED:

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

donde #IMPLIED es un tipo de atributo definido.

Ejemplo

A continuaci贸n 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 ning煤n atributos para ser incluido en elemento nombre. Es opcional.



Advertisements