Curso 2024-25 - IES El Rincón
Proyecto mantenido por ichigar
XML (eXtensible Markup Language) es un lenguaje de marcado que se utiliza para almacenar y transportar datos de forma estructurada y legible tanto por humanos como por máquinas. XML no define cómo se deben presentar los datos, sino cómo deben estructurarse. Fue desarrollado por el W3C (World Wide Web Consortium) y es ampliamente utilizado en aplicaciones y sistemas para el intercambio de información.
Estructura jerárquica:
XML organiza los datos en una estructura de árbol jerárquico, donde un documento XML comienza con un elemento raíz que puede contener múltiples elementos hijos, lo que facilita representar relaciones entre datos.
Legible para humanos y máquinas:
Los datos en XML están escritos en un formato que puede ser entendido por personas y procesado por software.
Extensible:
XML permite definir etiquetas personalizadas que se ajusten a las necesidades específicas de los datos, sin restricciones predefinidas.
Independiente de la plataforma y el lenguaje:
Al ser texto plano, los archivos XML pueden ser utilizados en diferentes plataformas, sistemas operativos y lenguajes de programación.
Validación mediante DTD o XSD:
XML permite la validación de la estructura y el contenido de los datos mediante DTD (Document Type Definition) o XSD (XML Schema Definition). Esto garantiza que los documentos sigan un formato predefinido.
Separación entre contenido y presentación:
XML no incluye información sobre cómo deben presentarse los datos; en su lugar, esta tarea suele delegarse en lenguajes como XSL (eXtensible Stylesheet Language).
Compatibilidad con Unicode:
XML admite el estándar Unicode, lo que permite manejar datos en casi cualquier idioma y alfabeto.
Uso de etiquetas y atributos:
XML utiliza etiquetas para definir elementos y atributos para agregar metadatos adicionales a esos elementos.
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<catalogo>
<libro id="1">
<titulo>Cien años de soledad</titulo>
<autor>Gabriel García Márquez</autor>
<añoPublicacion>1967</añoPublicacion>
<editorial>Editorial Sudamericana</editorial>
<precio moneda="USD">15.99</precio>
</libro>
<libro id="2">
<titulo>Don Quijote de la Mancha</titulo>
<autor>Miguel de Cervantes</autor>
<añoPublicacion>1605</añoPublicacion>
<editorial>Francisco de Robles</editorial>
<precio moneda="EUR">12.50</precio>
</libro>
</catalogo>
Bien formado:
Un documento XML debe cumplir ciertas reglas básicas.
Interoperabilidad:
XML es ampliamente utilizado para facilitar la comunicación entre sistemas heterogéneos, como servicios web (SOAP, REST) y aplicaciones empresariales.
Estas características hacen que XML sea una herramienta poderosa para el manejo de datos estructurados en diversas industrias. Sin embargo, en ciertos casos, ha sido reemplazado o complementado por formatos más ligeros, como JSON, dependiendo de los requisitos del proyecto.
La estructura de un documento XML se organiza en niveles jerárquicos que consisten en elementos, atributos, texto y comentarios. A continuación, se describe su estructura y elementos clave.
La declaración XML es opcional, pero se recomienda incluirla al inicio del documento para especificar la versión de XML y la codificación de caracteres.
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
Especificar la codificación de caracteres en un documento XML es crucial porque garantiza que el contenido del documento sea interpretado correctamente por los sistemas que lo procesan.
Cada carácter en un documento tiene un código numérico que depende de la codificación utilizada (por ejemplo, UTF-8, ISO-8859-1, etc.). Si un sistema interpreta un archivo con una codificación diferente a la utilizada al crearlo, algunos caracteres podrían aparecer como símbolos extraños o causar errores de lectura.
Ejemplo: Un carácter especial como ñ en UTF-8 se representa de forma diferente en ISO-8859-1. Sin la codificación adecuada, un texto como “mañana” podría mostrarse incorrectamente como “mañana”.
Todo documento XML debe tener un único elemento raíz que contenga todos los demás elementos.
Ejemplo:
<tienda>
...
</tienda>
En este caso, <tienda>
es el elemento raíz que engloba todo el contenido del documento.
Los elementos son las etiquetas que estructuran los datos. Los elementos pueden contener otros elementos, texto o ambos.
Ejemplo:
<producto>
<nombre>Televisor</nombre>
<precio>450.00</precio>
</producto>
<producto>
es el elemento que contiene otros elementos (<nombre>
y <precio>
).Los atributos proporcionan información adicional sobre un elemento y están definidos dentro de la etiqueta de apertura.
Ejemplo:
<producto id="101" categoria="electrodomestico">
<nombre>Televisor</nombre>
<precio moneda="USD">450.00</precio>
</producto>
id
y categoria
son atributos del elemento <producto>
.moneda
es un atributo del elemento <precio>
.Los elementos pueden contener texto como contenido del mismo.
Ejemplo:
<descripcion>Un televisor de alta definición de 55 pulgadas.</descripcion>
XML es sensible a los espacios en blanco dentro del contenido de texto, pero ignora los espacios usados para dar formato al documento.
Ejemplo (formato legible):
<producto>
<nombre>Televisor</nombre>
<precio>450.00</precio>
</producto>
Los comentarios se utilizan para agregar notas en el documento que no serán procesadas por los programas.
Ejemplo:
<!-- Este es un catálogo de productos -->
<tienda>
<producto>
<nombre>Televisor</nombre>
<precio>450.00</precio>
</producto>
</tienda>
Ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<tienda>
<!-- Lista de productos disponibles -->
<producto id="101" categoria="electrodomestico">
<nombre>Televisor</nombre>
<descripcion>Un televisor de alta definición de 55 pulgadas.</descripcion>
<precio moneda="USD">450.00</precio>
</producto>
<producto id="102" categoria="electrodomestico">
<nombre>Licuadora</nombre>
<descripcion>Licuadora de 10 velocidades.</descripcion>
<precio moneda="USD">35.99</precio>
</producto>
</tienda>
Un documento XML se considera bien formado cuando cumple con las reglas sintácticas definidas por la especificación de XML. Estas reglas garantizan que el documento sea legible y procesable por cualquier parser XML compatible. A continuación, se describen las principales características que debe cumplir un documento XML bien formado:
<catalogo>
<producto>
<nombre>Televisor</nombre>
</producto>
</catalogo>
<producto>
<nombre>Televisor</nombre>
</producto>
<producto>
<nombre>Licuadora</nombre>
</producto>
<nombre>Televisor</nombre>
<nombre>Televisor
<producto>
<nombre>Televisor</nombre>
<precio>450.00</precio>
</producto>
<producto>
<nombre>Televisor</precio>
<precio>450.00</nombre>
</producto>
<Nombre>Televisor</Nombre>
<Nombre>Televisor</nombre>
"
o '
) para delimitar los valores.<producto id="101" categoria="electrodomestico" />
<producto id=101 categoria=electrodomestico />
<descripcion>Televisor de 55 pulgadas & alta definición.</descripcion>
<descripcion>Televisor de 55 pulgadas & alta definición.</descripcion>
<?xml version="1.0" encoding="UTF-8"?>
Texto fuera de la raíz.
<catalogo>
<producto>
<nombre>Televisor</nombre>
</producto>
</catalogo>
Existen diferentes herramientas para comprobar si un documento XML está bien formado. Entre ellas podemos usar cualquier navegador web. Si abrimos el documento en el mismo nos mostrará los errores si está mal formado.
También podemos usar herramientas online, como por ejemplo https://codebeautify.org/xmlvalidator
Visual Studio Code valida que un fichero XML esté bien formado utilizando la extensión XML Tools
En XML, no existen reglas estrictas sobre cuándo usar atributos y cuándo usar elementos secundarios. Los datos pueden almacenarse en cualquiera de estas dos formas.
Observa estos ejemplos:
<person sex="female">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<sex>female</sex>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
En el primer ejemplo, sex
es un atributo, mientras que en el segundo, sex
es un elemento secundario. Ambos proporcionan la misma información.
No hay reglas fijas sobre cuándo usar atributos o elementos secundarios, pero el criterio general es que en XML es mejor evitarlos. Aunque no en todos los casos.
Los siguientes tres documentos XML contienen la misma información, pero con enfoques diferentes:
<note date="12/11/2002">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note>
<date>12/11/2002</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note>
<date>
<day>12</day>
<month>11</month>
<year>2002</year>
</date>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
Existen algunos problemas con el uso de atributos en XML:
Pr tanto, el criterio general es que es mejor usar elementos para describir los datos y atributos solo para información que no sea relevante a los datos.
Por ejemplo, este es un mal uso de XML:
<note day="12" month="11" year="2002"
to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>
Siempre hay excepciones. La regla sobre evitar atributos tiene una excepción: cuando se trata de identificadores únicos (ID references).
A veces, se le asignan referencias ID a elementos. Estas referencias permiten acceder a los elementos XML de manera similar a los atributos NAME
o ID
en HTML.
Ejemplo:
<messages>
<note id="p501">
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
<note id="p502">
<to>Jani</to>
<from>Tove</from>
<heading>Re: Reminder</heading>
<body>I will not!</body>
</note>
</messages>
Aquí, el ID no forma parte de los datos reales de la nota, sino que es simplemente un identificador único.
En conclusión, los metadatos (datos sobre los datos) deben almacenarse como atributos, mientras que los datos reales deben almacenarse como elementos.