DevSupportDocs/dtd.md

110 lines
2.6 KiB
Markdown

## 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
<?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
<?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>
```
```dtd
<!ELEMENT marcadores (pagina)*>
<!ELEMENT pagina (nombre, descripcion, url)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT url (#PCDATA)>
```
#### XML con DTD externo (Público)
```xml
<?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)
```xml
<!DOCTYPE elemento-raíz SYSTEM "URI" [ declaraciones ]>
---
<!DOCTYPE elemento-raíz PUBLIC "identificador-público" "URI" [ declaraciones ]>
```
### Tipo de declaraciones
#### Elementos
```dtd
<!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
<?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>
```
```dtd
<!-- 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
https://en.wikipedia.org/wiki/XML_schema#Languages