Diferencia entre revisiones de «Usuario:Lmorillas/modulo lenguajes de marcas/xml/dtd»

De WikiEducator
Saltar a: navegación, buscar
 
(Una revisión intermedia por el mismo usuario no mostrado)
Línea 4: Línea 4:
 
== DTD ==
 
== 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.)  
 
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.)  
 +
 +
{{Tip| Aquí tienes un buen resumen: http://www.mclibre.org/consultar/xml/lecciones/xml_dtd.html}}
  
 
=== Funciones de un DTD ===
 
=== Funciones de un DTD ===
Línea 22: Línea 24:
 
         "http://...">
 
         "http://...">
 
* Primero lee el externo, depués el interno
 
* Primero lee el externo, depués el interno
 +
 +
  
 
===Declaraciones ELEMENT===
 
===Declaraciones ELEMENT===

Última revisión de 10:58 17 ene 2013


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.)

Icon present.gif
Tip: Aquí tienes un buen resumen: http://www.mclibre.org/consultar/xml/lecciones/xml_dtd.html


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:
 #IMPLIED

Declaración de entidades

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

Entidades parámetro

<!ENTITY %datos_personales "nombre|telefono|email">
<!ENTITY %empleado (departamento, %datos_personales)>

Entidades y notaciones

Combinar datos textuales y no textuales.

 <!ELEMENT logo EMPTY>
 <!ATTLIST logo imagen ENTITY #REQUIRED>
 <!NOTATION GIF SYSTEM "visor_sistemas">
 <!ENTITY logo_centro SYSTEM "http://www.miempresa.com/logo.gif">
    NDATA GIF>


<logo imagen="logo_centro" />


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