5.0 KiB
5.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 ]>
Elementos
Tipos de declaraciones
<!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.
Operador de elección de elementos
Para declarar elementos que contengan elementos opcionales se utiliza el operador |
<!-- codigo o id, pudiendo repetirse -->
<!ELEMENT articulos (codigo | id)*>
<!-- codigo o id -->
<!ELEMENT articulo ((codigo | id), nombre)>
<!-- pais y ciudad o codigo_postal -->
<!ELEMENT localidad ((pais, ciudad) | codigo_postal)>
<!-- #PCDATA (texto sin etiquetas), o codigo, o id -->
<!ELEMENT articulos (#PCDATA | codigo | id)*>
Si una de las opciones es #PCDATA, esta debe escribirse en primer lugar.
Atributos
Tipos de declaraciones
<!ATTLIST nombre-del-elemento nombre-del-atributo tipo-de-atributo valor-del-atributo>
El tipo de atributo puede ser:
- Valor por defecto - "valor"
- Atributo obligatorio - #REQUIRED
- Atributo opcional - #IMPLIED
- Atributo fijo - #FIXED "valor"
<!-- Valor por defecto -->
<!ATTLIST f1 pais CDATA "España">
<!-- Valor obligatorio -->
<!ATTLIST f1 pais CDATA #REQUIRED>
<!-- Valor opcional -->
<!ATTLIST f1 pais CDATA #IMPLIED>
<!-- Valor fijo -->
<!ATTLIST f1 pais CDATA #FIXED "España">
Tipos de atributos
| Tipo | Descripcion |
|---|---|
| CDATA | Texto |
| (val1 | val2) | Elección de una lista |
| ID | Id único |
| IDREF | Id con referencia a otro atributo id |
| IDREFS | Lista de ids existentes |
| NMTOKEN | Cadena de caracteres** |
| NMTOKENS | Uno o varios NMTOKEN separados por espacios |
| NOTATION | El nombre de una notacion |
| ENTITY | El nombre de una entidad |
| ENTITIES | El nombre de varias entidades |
| xml:lang | Indica el idioma del contenido |
| xml:space | Espacios, tabs e intros se mantienen |