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

De WikiEducator
Saltar a: navegación, buscar
Línea 56: Línea 56:
  
 
=== Restricciones  ===
 
=== 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 mixto no puede restringir cuántas veces y el orden en que aparecen los hijos. Sólo los elementos permitidos.
• An element-only content model requires
+
* 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:
that each child element in the instance
+
  (A?, A?)
match exactly one part of the content
+
=== Comodines ===
model
+
* Un elmento que puede contener cualquier elemento declarado en el DTD o texto
(A?, A?) is not a legal content model
+
  <!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

Revisión de 05:35 12 ene 2012

DTD

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