<mensaje importancia="alta">
<quien>Izaro Sarasola</quien>
<para>John Brown</para>
<texto idioma="ingles">
Hello John, how are you going?
...
</texto>
</mensaje>
<!ATTLIST>
Especifica el tipo de atributo. Esto indica que hay atributos de un elemento en el documento XML. Generalmente, solo se utiliza ATTLIST para declarar todos los atributos de un elemento (pero puede usarse una ATTLIST para cada atributo).
Cada atributo solo se puede especificar una vez en cualquier orden. En el ejemplo anterior, los atributos de los elementos <mensaje> y <texti>, es decir, la importancia y el idioma a declarar, serían:
<!ELEMENT mensaje (quien, para, texto)>
<!ATTLIST mensaje importancia (normal | alta) normal>
<!ELEMENT texto (#PCDATA)>
<!ATTLIST texto idioma CDATA #REQUIRED>
Las declaraciones de atributos comienzan con la cadena <! ATTLIST ", luego vendrá el identificador del elemento que se atribuirá al atributo. El nombre del atributo olor, tipo y valor predeterminado viene de. En el ejemplo
El atributo de "importancia" puede contener valores "normales" o "alta", pero si no tenemos un valor predeterminado, el atributo se determinará como "normal".
El atributo "idioma" de "texto" puede contener datos CDATA. #REQUIRED indica que la palabra no tiene un valor predeterminado. La determinación de este atributo es obligatoria.
Sintaxis
<!ATTLIST nombre-elemento nombre-atributo (en1|en2|..) valor-defecto>
DTD:
<!ATTLIST pago tipo(tarjeta|monedas) "monedas">
Ejemplo XML :
<pago tipo="tarjeta" />
o
<pago tipo="monedas" />
<!ATTLIST mensaje dia CDATA #REQUIRED>
<mensaje dia ="14, de mayo ">
<!ATTLIST mensaje dia NMTOKEN #REQUIRED>
<mensaje dia ="2007-5-14">
<!ELEMENT enlace EMPTY>
<!ATTLIST enlace objetivo IDREF #REQUIRED>
<!ELEMENT seccion (paragrafo)*>
<!ATTLIST seccion referencia ID #IMPLIED>
<!ATTLIST mensaje dia NOTATION (ISO-DATE | EUROPEAN-DATE) #REQUIRED>
<!NOTATION HTML SYSTEM "http://www.w3.org/Markup">
<!NOTATION HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
El valor predeterminado puede ser un fondo:
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
DTD:
<!ATTLIST person number CDATA #REQUIRED>
Valid XML:
<person number="5677" />
Invalid XML:
<person />
Use the #REQUIRED keyword if you don't have an option for a default value, but still want to force the attribute to be present.
Ejemplos:
CDATA:
CDATA:
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color CDATA #REQUIRED>
]>
<ejemplo></ejemplo>
<!-- falta atributo "color" -->
<ejemplo color=""></ejemplo>
<ejemplo color="rojo"></ejemplo>
<ejemplo color="azul cielo #000080"></ejemplo>
NMTOKEN: Solo puede ingresar letras, números y signos de puntuación ".", Guión "-", subrayar "_" y dos puntos ":":
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color NMTOKEN #REQUIRED>
]>
<ejemplo color=""></ejemplo>
<ejemplo color="azul-cielo"></ejemplo>
<ejemplo color="1"></ejemplo>
<ejemplo color="azul cielo"></ejemplo>
<!-- No es correcto. Hay que quitar el espacio en blanco -->
NMTOKENS: el atributo aceptará letras, números, signos de puntuación (modo NMTOKEN) y espacios.:
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color NMTOKENS #REQUIRED>
]>
<ejemplo color=""></ejemplo>
<ejemplo color="1"></ejemplo>
<ejemplo color="azul cielo"></ejemplo>
<ejemplo color="2*2"></ejemplo>
<!-- '*' No se puede poner-->
Valores: El atributo solo puede tomar un valor de lo que aparece. Debemos escribir la lista entre paréntesis, cada valor de lista "|" Lo distribuiremos con el símbolo. Si los valores están en blanco, deben estar entre comillas. Ejemplo:
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color (azul|blanco|rojo) #REQUIRED>
]>
<ejemplo color=""></ejemplo>
<ejemplo color="azul"></ejemplo>
<ejemplo color="verde"></ejemplo>
<!-- No aparece entre las opciones -->
ID: El valor del atributo debe ser único (no-nombre) y no se puede repetir en otros elementos o atributos.
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo (libro*)>
<!ELEMENT libro (#PCDATA) >
<!ATTLIST libro codigo ID #REQUIRED>
]>
<ejemplo>
<libro codigo="L1"></libro>
<libro codigo="L2"></libro>
</ejemplo>
<ejemplo>
<libro codigo="1">Moroak gara behe laino artean?</libro>
<!-- Un ID correcto no puede empezar por un numero-->
<libro codigo="L2">Eh, petrel!</libro>
</ejemplo>
<ejemplo>
<libro codigo="L1">Moroak gara behe laino artean?</libro>
<libro codigo="L1">Eh, petrel!</libro>
<!-- No es correcto, no se puede repetir el ID -->
</ejemplo>
IDREF: El valor del atributo debe coincidir con el valor del valor de ID de un elemento:
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo ((libro|prestamo)*)>
<!ELEMENT libro (#PCDATA) >
<!ATTLIST libro codigo ID #REQUIRED>
<!ELEMENT prestamo (#PCDATA) >
<!ATTLIST prestamo libro IDREF #REQUIRED>
]>
<ejemplo>
<libro codigo="L1">Poema de Gilgamesh</libro>
<prestamo libro="L1">Numa Nigerio</prestamo>
</ejemplo>
<ejemplo>
<libro codigo="L1">Poema de Gilgamesh</libro>
<prestamo libro="L2">Numa Nigerio</prestamo>
<!-- No es correcto. "L2" no es un ID de otro elemento-->
</ejemplo>
IDEREFS: El valor del atributo está compuesto por los valores de los ID de los elementos separados por espacios.
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo ((libro|prestamo)*)>
<!ELEMENT libro (#PCDATA) >
<!ATTLIST libro codigo ID #REQUIRED>
<!ELEMENT prestamo (#PCDATA) >
<!ATTLIST prestamo libro IDREFS #REQUIRED>
]>
<ejemplo>
<libro codigo="L1">Poema de Gilgamesh</libro>
<libro codigo="L2">Los preceptos de Ptah-Hotep</libro>
<prestamo libro="L1 L2">Numa Nigerio</prestamo>
</ejemplo>
<ejemplo>
<libro codigo="L1">Poema de Gilgamesh</libro>
<libro codigo="L2">Los preceptos de Ptah-Hotep</libro>
<prestamo libro="L3">Numa Nigerio</prestamo>
<!--No es correcto. "L3" no es un ID de otro libro -->
</ejemplo>
ENTITY: El valor del atributo debe ser el valor de otra entidad definida por DTD.
ENTITIES:El valor del atributo debe ser el valor de una lista definida por DTD de otras entidades.
NOTATION: El valor del atributo es una notación definida en el DTD.
Para inicializar los valores de los atributos:
#REQUIRED: El atributo es irrisorio, no puedo establecer un valor predeterminado. Por ejemplo:
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color CDATA #REQUIRED>
]>
< ejemplo></ ejemplo>
<!-- No es correcto. Falta el atributo color -->
<ejemplo color=""></ejemplo>
<ejemplo color="rojo"></ejemplo>
<ejemplo color="azul cielo #000080"></ejemplo>
#IMPLIED: El atributo no es obligatorio y no requiere un valor predeterminado.
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color CDATA #IMPLIED>
]>
<ejemplo></ejemplo>
<ejemplo color=""></ejemplo>
<ejemplo color="rojo"></ejemplo>
<ejemplo color="azul cielo #000080"></ejemplo>
#FIXED: El atributo tendrá un valor fijo e inviolable.
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color CDATA #FIXED "verde">
]>
<ejemplo></ejemplo>
<ejemplo color=""></ejemplo>
<!-- Necesita el verde -->
<ejemplo color="blanco"></ejemplo>
<!-- Necesita el verde -->
<ejemplo color="verde"></ejemplo>
value: el atributo tendrá un valor fijo predeterminado.
<!DOCTYPE ejemplo [
<!ELEMENT ejemplo EMPTY>
<!ATTLIST ejemplo color CDATA "verde">
]>
<ejemplo></ejemplo>
<ejemplo color=""></ejemplo>
<ejemplo color="blanco"></ejemplo>
<ejemplo color="verde"></ejemplo>
value: el atributo tendrá un valor fijo predeterminado.
Ejemplo:
<trabajador>
El artículo está destinado a tener los siguientes dos atributos: IDtrabajador y IDtrabajadorJefe. El primer tipo de ID será obligatorio y el segundo tipo IDREF y opcional.
<!ELEMENT semaforo (nombre, apellido)>
<!ATTLIST trabajador
IDtrabajador #REQUIRED
IDtrabajadorJefe IDREF #IMPLIED>
...
Aquí tenemos una parte de un valor válido XML que se define en las reglas recién definidas. Cada trabajador <item> tiene un atributo id con un valor válido (nombre XML válido) y los elementos <trabajador> segundo también tiene un atributo Attribute y el valor de ese atributo para el ID del otro elemento en el documento Debe tener el mismo valor de atributo. En este caso, el segundo <lang> item idAddress Este atributo y el primer <lang> elemento Idangle tienen el mismo valor.
<trabajadores>
<trabajador idTrabajador="e_111">...</trabajador>
<trabajador idTrabajador="e_222" idTrabajadorJefe="e_111">
</trabajador>
</trabajadores>
Con respecto a las reglas definidas anteriormente, una parte de XML no será válida. El valor de atributo no existe para un atributo de tipo ID de otro elemento en el documento.
<trabajadores>
<trabajador idTrabajador="e_111" idTrabajadorJefe="e_333">
...
</trabajador>
<trabajador idTrabajador="e_222" idTrabajadorJefe="e_111">
...
</trabajador>
</trabajadores>
IDREFS: Indica diferentes identificadores de otros elementos, separados por espacios.
NMTOKEN: Cualquier nombre que no contenga un espacio en blanco dentro. No hay mentes anteriores y atrasadas.
Ejemplo:
NMTOKEN Se pretende declarar un atributo de atributo de tipo.
Este DTD es<rio> El atributo del elemento y su atributo de país.:
<!ELEMENT rio (nombre)>
<!ATTLIST pais NMTOKEN #REQUIRED>
En la siguiente parte XML, el valor del atributo del país es válido con respecto a la regla definida anteriormente:
<rio pais="AEB">
<nombre>Misisipi</nombre>
</nombre>
En el siguiente documento XML, el valor del valor del atributo no es válido, ya que contiene espacio para la regla definida anteriormente:
<rio pais="Estados unidos">
<nombre>Misisipi</nombre>
</rio>
NMTOKENS:Una lista de nombres, sin espacios internos (no se tendrán en cuenta los espacios anteriores y siguientes), separados por espacios.
NOTATION: un nombre de notación que debe ser declarado en DTD.