Contenidos en readme, apuntes XML y DTD en diferentes archivos
This commit is contained in:
parent
95fe704b4b
commit
8b03e06162
|
|
@ -0,0 +1,111 @@
|
|||
## Apuntes XML
|
||||
|
||||
#### Definición
|
||||
|
||||
Es una especificación de W3C, que significa eXtensible Markup Language, y es derivado de SGML. Permite definir la gramática de lenguajes específicos para estructurar documentos grandes.
|
||||
|
||||
#### Ventajas
|
||||
|
||||
- Es extensible: Después de diseñado y puesto en producción, es posible extender XML con la adición de nuevas etiquetas.
|
||||
- El analizador es un componente estándar, no es necesario crear un analizador específico para cada versión de lenguaje XML.
|
||||
- Es sencillo entender su estructura y procesarla, tanto por humanos como por maquinas
|
||||
|
||||
#### Estructura y elementos:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<?xml-stylesheet type="text/css" href="estilo.css"?>
|
||||
<!-- comentario: fin del prologo -->
|
||||
<raiz>
|
||||
<elemento1>
|
||||
<etiquetas>
|
||||
<etiqueta1 atributo="valor">contenido</etiqueta1>
|
||||
<etiqueta2 atributo="">contenido</etiqueta2>
|
||||
<etiqueta3>contenido</etiqueta3>
|
||||
</etiquetas><!-- comentario -->
|
||||
<etiqueta_vacia/>
|
||||
</elemento1>
|
||||
</raiz>
|
||||
```
|
||||
|
||||
- Se compone de un prologo (opcional) y un cuerpo
|
||||
- El prologo contiene:
|
||||
- Declaración xml
|
||||
- Declaración del tipo de documento
|
||||
- Enlace al documento DTD asociado, o el propio DTD insertado
|
||||
- Comentarios e instrucciones de procesamiento
|
||||
- En el cuerpo solo puede existir un elemento <raiz>
|
||||
- Los elementos pueden anidarse, pero hay que cerrar siempre los inferiores primero
|
||||
- Atributos, sirven para proporcionar información extra sobre el elemento que lo contiene. **Todos los atributos de un elemento tienen que ser únicos**
|
||||
|
||||
#### Secciones CDATA
|
||||
|
||||
Es una construcción XML se pueden introducir elementos que no se analicen como código XML, siendo útil para textos con caracteres especiales. Ejemplo:
|
||||
|
||||
```xml
|
||||
<![CDATA[#include <stdio.h>]]>
|
||||
```
|
||||
|
||||
Dentro de una sección CDATA no se puede escribir la cadena "]]>". En consecuencia, no se pueden anidar secciones CDATA.
|
||||
|
||||
#### Caracteres reservados y unicode
|
||||
|
||||
| Carácter | Código |
|
||||
| ------------------ | -------- |
|
||||
| < (menor que) | `<` |
|
||||
| > (mayor que) | `>` |
|
||||
| " (comilla doble) | `"` |
|
||||
| ' (comilla simple) | `'` |
|
||||
| & (ampersand) | `&` |
|
||||
|
||||
Para unicode se introduce el código decimal o hexadecimal mediante los caracteres reservados `&# DEC_HEX_CODE ;`. Para hexadecimal es necesario anteponer una x al código.
|
||||
|
||||
[Listado unicode](https://en.wikipedia.org/wiki/List_of_Unicode_characters)
|
||||
|
||||
#### Namespaces
|
||||
|
||||
Es un método para evitar conflictos entre los nombres de los elementos, al convertir éstos en nombres únicos.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Definición en raiz, necesario prefijo -->
|
||||
<ejemplo xmlns:papel="https://url.es/papel"
|
||||
xmlns:naipe="https://url.es/naipe">
|
||||
|
||||
<papel:carta>
|
||||
<papel:destinatario>Tomás Alonso</papel:destinatario>
|
||||
</papel:carta>
|
||||
<naipe:carta>
|
||||
<naipe:palo>Corazones</naipe:palo>
|
||||
</naipe:carta>
|
||||
<!-- Definición en elemento, no es obligatorio el prefijo -->
|
||||
<carta xmlns:bares="https://url.es/bares">
|
||||
<bebidas>
|
||||
<refresco precio="2">Coca-Cola</refresco>
|
||||
<cocktail xmlns="">San francisco</cocktail>
|
||||
</bebidas>
|
||||
</carta>
|
||||
</ejemplo>
|
||||
```
|
||||
|
||||
- Los namespaces se pueden definir en el elemento raíz, o en los elementos que lo vayan a utilizar
|
||||
- Se puede definir un namespace por defecto, evitando tener que usar prefijos en las etiquetas de los elementos
|
||||
- Para indicar que un elemento no pertenece a ningún namespace se incluye el atributo xmlns vacío en la etiqueta del mismo
|
||||
|
||||
#### Uso del atributo xml:space
|
||||
|
||||
`<etiqueta xml:space="default"|"preserve">`
|
||||
|
||||
El valor "default" indica que la aplicación que haga uso del documento XML es la encargada de decidir cómo tratar los espacios en blanco. Ahora bien, aún indicando el valor "preserve", hay que tener en cuenta que no todos los programas que hacen uso de documentos XML reconocen este atributo.
|
||||
|
||||
#### Validación
|
||||
|
||||
Un XML tiene dos estados de validación: well-formed y valid:
|
||||
- well-formed implica que no tiene errores de sintaxis y cumple el estándar descrito por [W3C](https://www.w3.org/TR/xml/)
|
||||
- valid añade ademas el cumplimiento de las normas de estructura definidas en el documento de validación, ya sea DTD (Document Type Definition), XSD (XML Schema Definition), o cualquiera de los multiples lenguajes de definición de estructura XML existentes
|
||||
|
||||
Playlist: https://www.youtube.com/playlist?list=PLqu7Q-jp3eAPhrfYbS-RcTNZn7L2LMzpp
|
||||
|
||||
XMLCopyEditor: https://xml-copy-editor.sourceforge.io/
|
||||
|
||||
Tutorial XML (Abrirllave.com): https://www.abrirllave.com/xml/
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
## 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
|
||||
|
|
@ -1,181 +1,6 @@
|
|||
## Apuntes XML
|
||||
# Documentación LMSGI
|
||||
> Relación de apuntes y ejemplos.
|
||||
|
||||
#### Definición
|
||||
|
||||
Es una especificación de W3C, que significa eXtensible Markup Language, y es derivado de SGML. Permite definir la gramática de lenguajes específicos para estructurar documentos grandes.
|
||||
|
||||
#### Ventajas
|
||||
|
||||
- Es extensible: Después de diseñado y puesto en producción, es posible extender XML con la adición de nuevas etiquetas.
|
||||
- El analizador es un componente estándar, no es necesario crear un analizador específico para cada versión de lenguaje XML.
|
||||
- Es sencillo entender su estructura y procesarla, tanto por humanos como por maquinas
|
||||
|
||||
#### Estructura y elementos:
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<?xml-stylesheet type="text/css" href="estilo.css"?>
|
||||
<!-- comentario: fin del prologo -->
|
||||
<raiz>
|
||||
<elemento1>
|
||||
<etiquetas>
|
||||
<etiqueta1 atributo="valor">contenido</etiqueta1>
|
||||
<etiqueta2 atributo="">contenido</etiqueta2>
|
||||
<etiqueta3>contenido</etiqueta3>
|
||||
</etiquetas><!-- comentario -->
|
||||
<etiqueta_vacia/>
|
||||
</elemento1>
|
||||
</raiz>
|
||||
```
|
||||
|
||||
- Se compone de un prologo (opcional) y un cuerpo
|
||||
- El prologo contiene:
|
||||
- Declaración xml
|
||||
- Declaración del tipo de documento
|
||||
- Enlace al documento DTD asociado, o el propio DTD insertado
|
||||
- Comentarios e instrucciones de procesamiento
|
||||
- En el cuerpo solo puede existir un elemento <raiz>
|
||||
- Los elementos pueden anidarse, pero hay que cerrar siempre los inferiores primero
|
||||
- Atributos, sirven para proporcionar información extra sobre el elemento que lo contiene. **Todos los atributos de un elemento tienen que ser únicos**
|
||||
|
||||
#### Secciones CDATA
|
||||
|
||||
Es una construcción XML se pueden introducir elementos que no se analicen como código XML, siendo útil para textos con caracteres especiales. Ejemplo:
|
||||
|
||||
```xml
|
||||
<![CDATA[#include <stdio.h>]]>
|
||||
```
|
||||
|
||||
Dentro de una sección CDATA no se puede escribir la cadena "]]>". En consecuencia, no se pueden anidar secciones CDATA.
|
||||
|
||||
#### Caracteres reservados y unicode
|
||||
|
||||
| Carácter | Código |
|
||||
| ------------------ | -------- |
|
||||
| < (menor que) | `<` |
|
||||
| > (mayor que) | `>` |
|
||||
| " (comilla doble) | `"` |
|
||||
| ' (comilla simple) | `'` |
|
||||
| & (ampersand) | `&` |
|
||||
|
||||
Para unicode se introduce el código decimal o hexadecimal mediante los caracteres reservados `&# DEC_HEX_CODE ;`. Para hexadecimal es necesario anteponer una x al código.
|
||||
|
||||
[Listado unicode](https://en.wikipedia.org/wiki/List_of_Unicode_characters)
|
||||
|
||||
#### Namespaces
|
||||
|
||||
Es un método para evitar conflictos entre los nombres de los elementos, al convertir éstos en nombres únicos.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Definición en raiz, necesario prefijo -->
|
||||
<ejemplo xmlns:papel="https://url.es/papel"
|
||||
xmlns:naipe="https://url.es/naipe">
|
||||
|
||||
<papel:carta>
|
||||
<papel:destinatario>Tomás Alonso</papel:destinatario>
|
||||
</papel:carta>
|
||||
<naipe:carta>
|
||||
<naipe:palo>Corazones</naipe:palo>
|
||||
</naipe:carta>
|
||||
<!-- Definición en elemento, no es obligatorio el prefijo -->
|
||||
<carta xmlns:bares="https://url.es/bares">
|
||||
<bebidas>
|
||||
<refresco precio="2">Coca-Cola</refresco>
|
||||
<cocktail xmlns="">San francisco</cocktail>
|
||||
</bebidas>
|
||||
</carta>
|
||||
</ejemplo>
|
||||
```
|
||||
|
||||
- Los namespaces se pueden definir en el elemento raíz, o en los elementos que lo vayan a utilizar
|
||||
- Se puede definir un namespace por defecto, evitando tener que usar prefijos en las etiquetas de los elementos
|
||||
- Para indicar que un elemento no pertenece a ningún namespace se incluye el atributo xmlns vacío en la etiqueta del mismo
|
||||
|
||||
#### Uso del atributo xml:space
|
||||
|
||||
`<etiqueta xml:space="default"|"preserve">`
|
||||
|
||||
El valor "default" indica que la aplicación que haga uso del documento XML es la encargada de decidir cómo tratar los espacios en blanco. Ahora bien, aún indicando el valor "preserve", hay que tener en cuenta que no todos los programas que hacen uso de documentos XML reconocen este atributo.
|
||||
|
||||
#### Validación
|
||||
|
||||
Un XML tiene dos estados de validación: well-formed y valid:
|
||||
- well-formed implica que no tiene errores de sintaxis y cumple el estándar descrito por [W3C](https://www.w3.org/TR/xml/)
|
||||
- valid añade ademas el cumplimiento de las normas de estructura definidas en el documento de validación, ya sea DTD (Document Type Definition), XSD (XML Schema Definition), o cualquiera de los multiples lenguajes de definición de estructura XML existentes
|
||||
|
||||
Playlist: https://www.youtube.com/playlist?list=PLqu7Q-jp3eAPhrfYbS-RcTNZn7L2LMzpp
|
||||
|
||||
XMLCopyEditor: https://xml-copy-editor.sourceforge.io/
|
||||
|
||||
Tutorial XML (Abrirllave.com): https://www.abrirllave.com/xml/
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
## 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.
|
||||
|
||||
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)
|
||||
```dtd
|
||||
<!ELEMENT marcadores (pagina)*>
|
||||
<!ELEMENT pagina (nombre, descripcion, url)>
|
||||
<!ELEMENT nombre (#PCDATA)>
|
||||
<!ELEMENT descripcion (#PCDATA)>
|
||||
<!ELEMENT url (#PCDATA)>
|
||||
```
|
||||
```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>
|
||||
```
|
||||
|
||||
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 mas de un documento.
|
||||
|
||||
|
||||
|
||||
https://en.wikipedia.org/wiki/XML_schema#Languages
|
||||
## Contenidos
|
||||
* [Apuntes XML](./000_apuntes_xml.md)
|
||||
* [Apuntes DTD](./001_apuntes_dtd.md)
|
||||
Loading…
Reference in New Issue