Declaración XML y codificación de caracteres

1. ¿Qué es la declaración XML?

La declaración de XML es una línea opcional (pero recomendada) que aparece al inicio de un archivo. Sirve para indicar:

  • La versión del estándar XML usada.
  • La codificación de caracteres (encoding).
  • (Opcional) si el documento es independiente de un DTD externo (standalone).

Ejemplo típico:

<?xml version="1.0" encoding="UTF-8"?>

2. Atributos de la declaración XML

a) version

  • Define la versión del estándar XML.
  • La más usada es 1.0 (compatible en casi todos los sistemas).
  • Existe 1.1, pero su uso es poco común.
<?xml version="1.0"?>

b) encoding

Define la codificación de caracteres usada en el documento. Esto indica cómo se representan letras, símbolos y caracteres especiales.

Los más usados son:

  • UTF-8: estándar universal, soporta todos los idiomas y emojis.
  • ISO-8859-1 (Latin-1): soporta caracteres occidentales (acentos, ñ), pero no otros alfabetos.
  • UTF-16: soporta caracteres extendidos, aunque suele ser menos eficiente en tamaño.

Ejemplo con ISO-8859-1:

<?xml version="1.0" encoding="ISO-8859-1"?>

Ejemplo con UTF-16:

<?xml version="1.0" encoding="UTF-16"?>

Si no se indica encoding, por defecto se asume UTF-8.

c) standalone

Indica si el documento depende de un archivo externo (como un DTD) para validarse.

  • standalone="yes": el documento es independiente.
  • standalone="no": el documento necesita un archivo externo.

Ejemplo:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

3. Importancia de la codificación

Si no se define correctamente la codificación, el documento puede mostrar errores en caracteres especiales:

Ejemplo con UTF-8 (correcto):

<?xml version="1.0" encoding="UTF-8"?>
<mensaje>
    Hola, señor García! 😀
</mensaje>

Ejemplo con ISO-8859-1 (se rompe con emoji):

<?xml version="1.0" encoding="ISO-8859-1"?>
<mensaje>
    Hola, señor García! 😀
</mensaje>

Resultado: la letra ñ y los acentos funcionan, pero el emoji dará error porque ISO-8859-1 no lo soporta.

4. Ejemplos comparativos

a) Documento en UTF-8

<?xml version="1.0" encoding="UTF-8"?>
<ciudades>
    <ciudad>São Paulo</ciudad>
    <ciudad>Múnchen</ciudad>
    <ciudad>北京</ciudad>
    <ciudad>東京</ciudad>
</ciudades>

UTF-8 permite representar caracteres latinos, chinos, japoneses y acentos sin problema.

b) Documento en ISO-8859-1

<?xml version="1.0" encoding="ISO-8859-1"?>
<ciudades>
    <ciudad>São Paulo</ciudad>
    <ciudad>München</ciudad>
    <ciudad>北京</ciudad> <!-- ERROR: no soportado -->
</ciudades>

ISO-8859-1 solo soporta caracteres occidentales, por eso falla con chino o japonés.

5. Buenas prácticas

  • Siempre incluir la declaración XML al inicio.
  • Usar UTF-8 como estándar universal (recomendado por el W3C).
  • Evitar mezclar distintas codificaciones en el mismo sistema.
  • Validar el archivo en un editor (por ejemplo, VS Code, Notepad++) para detectar errores de codificación.

6. Ejemplo completo

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!-- Ejemplo de documento XML con caracteres internacionales -->
<mensajes>
    <mensaje id="1">Hola, señor García!</mensaje>
    <mensaje id="2">Привет, мир</mensaje>
    <mensaje id="3">こんにちは世界</mensaje>
    <mensaje id="4">مرحبا بالعالم</mensaje>
</mensajes>

Gracias a UTF-8, este documento soporta español, ruso, japonés y árabe en el mismo archivo.

7. Resumen didáctico

La declaración XML se coloca al inicio del archivo y define:

  • Versión (version="1.0")
  • Codificación (encoding="UTF-8")
  • Independencia (standalone="yes/no")

UTF-8 es la codificación recomendada porque soporta todos los idiomas y símbolos. Una codificación incorrecta puede romper el archivo y generar errores en lectores XML.