Chuleta DTDs

De WikiEducator
Saltar a: navegación, buscar

DTD

Un DTD es el documento que define la estructura que debe tener un documento XML(elementos, atributos, entidades, notaciones, etc, que pueden aparecer, el orden y el número de veces que pueden aparecer, cuáles pueden ser hijos de cuáles, etc.)

Funciones de un DTD

  • Validar documentos
  • Dar valores por defecto a atributos que no existen
  • Declarar y reemplazar entidades
  • Documentar los documentos.

¿Cómo se introduce?

  • declaración DOCTYPE

¿Dónde?

  • Pueden aparecer dentro del documento xml, fuera o en ambos sitios.
  • Dentro del doc:
<!DOCTYPE root  ... >
  • Fuera del documento:
 <!DOCTYPE root SYSTEM 
        "http://...">
  • Primero lee el externo, depués el interno

Declaraciones ELEMENT

  • Especifican qué pueden contener los elementos
  • No soporte directo de namespaces
  • Los elementos pueden contener:
    • Nada
 <!ELEMENT name EMPTY>
    • Texto
 <!ELEMENT name (#PCDATA)>
    • Texto y nuevos elementos (hijos)
 <!ELEMENT name
  (#PCDATA|elem1|elem2|...)*>
    • Hijos
 <!ELEMENT name
  (elem1|elem2|...)*>

Sintaxis de declaraciones ELEMENT

  • Secuencia de hijos
 <!ELEMENT name (ch1, ch2)>
  • Elección entre hijos
 <!ELEMENT name (ch1|ch2)>
  • Secuencia de hijos opcionales
 <!ELEMENT name
    (ch?, ch2?, ch3?)>
  • Cero o más ...
 <!ELEMENT name (child*)>
  • Uno o más
 <!ELEMENT name (child+)>

Se pueden combinar las posibilidades

  • Elección entre secuencias:
 ((a, b) | (c, d)
  • Secuencia de opciones
 ((a | b), (c | d))
  • Secuencia opcional
 (a, b, c)?

No se puede mezclar , y | en una lista. Usa paréntesis para desambiguar.

Restricciones

  • Un modelo mixto no puede restringir cuántas veces y el orden en que aparecen los hijos. Sólo los elementos permitidos.
  • Un modelo de sólo elementos requiere que cada elemento hijo de la instancia coincida exactamente con una parte del modelo. Lo siguente no es legal:
 (A?, A?)

Comodines

  • Un elmento que puede contener cualquier elemento declarado en el DTD o texto
 <!ELEMENT name ANY>

Declaración de atributos de un elemento

 <!ATTLIST ename
   attr1 type1 default1
   attr2 type2 default2
   ...>

Tipos de atributos

  • CDATA
sin restricción
  • ID
un identificador
  • IDREF
tiene que coincidir con un ID de un elemento.
  • NMTOKEN
nombre o número
  • IDREFS
uno o más IDs separados por espacios
  • NMTOKENS
uno o más separados por espacios

Atributos por defecto

  • Valor requerido, lo insertará el parser
  #FIXED "value"
  • Atributo requerido, pero sin valor específico
 #REQUIRED
  • Atributo no requerido, con valor por defecto
 "valor"
  • Atributo no requerido, sin valor por defecto:
 #IMPLICIT

Declaración de entidades

  • Declaran un nombre para texto que se insertará en el documento
 <!ENTITY nombreEntidad "valorEntidad">
  • Se insertan así:
 &nombreEntidad;


Ejercicios DTDs

Icon activity.jpg

Ejercicios DTDs

Realiza los ejercicios de DTDs de la siguiente página de Bartolomé Sintes Marco: http://www.mclibre.org/consultar/xml/ejercicios/dtd.html