120 lines
3.0 KiB
Markdown
120 lines
3.0 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
|
|
|
|
| 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 |