98 lines
3.7 KiB
Markdown
98 lines
3.7 KiB
Markdown
## 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.
|
|
|
|
#### 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>
|
|
</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 ningun namespace se incluye el atributo xmlns vacío en la etiqueta del mismo
|
|
|
|
Listado unicode: https://en.wikipedia.org/wiki/List_of_Unicode_characters
|
|
|
|
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/ |