DevSupportDocs/dtd.md

3.0 KiB

Apuntes DTD

Definición

Es una definición de estructura y sintaxis para los documentos XML o SGML. Se puede incluir dentro del mismo documento XML, ser un archivo separado, o una mezcla de ambas.

Tipo de documento DTD (y su declaración dentro del XML)

XML con DTD interno

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE marcadores [
   <!ELEMENT marcadores (pagina)*>
   <!ELEMENT pagina (nombre, descripcion, url)>
   <!ELEMENT nombre (#PCDATA)>
   <!ELEMENT descripcion (#PCDATA)>
   <!ELEMENT url (#PCDATA)>
]>
<marcadores>
   <pagina>
      <nombre>Abrirllave</nombre>
      <descripcion>Tutoriales de informática.</descripcion>
      <url>http://www.abrirllave.com/</url>
   </pagina>
</marcadores>

XML con DTD externo (Privado)

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE marcadores SYSTEM "marcadores.dtd">
<marcadores>
   <pagina>
      <nombre>Abrirllave</nombre>
      <descripcion>Tutoriales de informática.</descripcion>
      <url>http://www.abrirllave.com/</url>
   </pagina>
</marcadores>
<!ELEMENT marcadores (pagina)*>
<!ELEMENT pagina (nombre, descripcion, url)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT url (#PCDATA)>

XML con DTD externo (Público)

<?xml version="1.0" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
   <head>
      <title>Título</title>
   </head>
   <body>
      <p>Párrafo</p>
   </body>
</html>

Se suele usar el método externo cuando se utiliza para validar más de un documento.

XML con DTD combinado (interno y externo)

<!DOCTYPE elemento-raíz SYSTEM "URI" [ declaraciones ]>
---
<!DOCTYPE elemento-raíz PUBLIC "identificador-público" "URI" [ declaraciones ]>

Tipo de declaraciones

Elementos

<!ELEMENT nombre-del-elemento tipo-de-contenido>

El tipo de contenido permitido dentro de un elemento puede ser:

  • Texto (#PCDATA)
  • Otros elementos
  • Elemento vacío (EMPTY)
  • Combinación de texto y otros elementos (ANY)
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE persona SYSTEM "persona.dtd">

<persona>
   <nombre>Carl</nombre>
   <edad/>
   <direccion>Rúa Veintisiete, 36246 <ciudad>Vigo</ciudad></direccion>
</persona>
<!-- Otros elementos -->
<!ELEMENT persona(nombre, edad, direccion)>
<!-- Texto -->
<!ELEMENT nombre (#PCDATA)>
<!-- Elemento vacío -->
<!ELEMENT edad EMPTY>
<!-- Combinación de texto y elementos -->
<!ELEMENT direccion ANY>

Cardinalidad de los elementos

Operador Cardinalidad
? 0-1 (min:0,max:1)
* 0-n (min:0,max:muchos)
+ 1-n (min:1,max:muchos)

Los elementos declarados en una DTD sobre los que no actúe ningún operador de cardinalidad, tendrán que aparecer obligatoriamente una única vez.

https://en.wikipedia.org/wiki/XML_schema#Languages