## Documentación 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
]>
Abrirllave
Tutoriales de informática.
http://www.abrirllave.com/
```
#### XML con DTD externo (Privado)
```xml
Abrirllave
Tutoriales de informática.
http://www.abrirllave.com/
```
```dtd
```
#### XML con DTD externo (Público)
```xml
Título
Párrafo
```
Se suele usar el método externo cuando se utiliza para validar más de un documento.
#### XML con DTD combinado (interno y externo)
```xml
---
```
### Elementos
#### Tipos de declaraciones
```dtd
```
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
Carl
Rúa Veintisiete, 36246 Vigo
```
```dtd
```
#### 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 |
```dtd
```
Si una de las opciones es #PCDATA, esta debe escribirse en primer lugar.
### Atributos
#### Tipos de declaraciones
```dtd
```
El tipo de atributo puede ser:
- Valor por defecto - "valor"
- Atributo obligatorio - #REQUIRED
- Atributo opcional - #IMPLIED
- Atributo fijo - #FIXED "valor"
```dtd
```
#### 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 |
### Entidades
Las entidades permiten definir constantes para que se pueda hacer referencia a ellas tanto desde el propio documento dtd (parametricas) como desde el xml (generales), pero se deben declarar en el mismo documento donde se vayan a utilizar.
```dtd
```
### Notaciones
### Secciones condicionales
Las secciones condicionales sirven para definir grupos de elementos que se deban de incluir o ignorar dentro del documento xml
https://en.wikipedia.org/wiki/XML_schema#Languages