Espacios de nombres en XML

8. Espacios de nombres en XML
Los espacios de nombres en XML (XML namespaces) se utilizan para evitar conflictos de nombres entre elementos y atributos en un documento XML. Permiten asignar un identificador único a cada elemento y atributo, incluso si tienen el mismo nombre pero pertenecen a diferentes vocabularios o dominios.
Los espacios de nombres se definen utilizando una sintaxis especial en XML. El formato típico de un espacio de nombres es:
<elemento xmlns:prefijo="URI del espacio de nombres"> ... </elemento>
Donde prefijo es un identificador único que se utiliza para hacer referencia al espacio de nombres dentro del documento, y URI del espacio de nombres es una cadena que identifica de manera única el espacio de nombres.
A continuación, se muestra un ejemplo de uso de espacios de nombres en XML:
<?xml version="1.0" encoding="UTF-8"?> <root xmlns:ns1="http://www.example.com/ns1" xmlns:ns2="http://www.example.com/ns2"> <ns1:elemento1>Contenido del elemento 1</ns1:elemento1> <ns2:elemento2>Contenido del elemento 2</ns2:elemento2> </root>
En este ejemplo, se definen dos espacios de nombres utilizando los prefijos ns1 y ns2. Los elementos <elemento1>
y <elemento2>
pertenecen a diferentes espacios de nombres y se distinguen por el prefijo utilizado.
Veamos un ejemplo más visual: Tenemos dos elementos llamados <persona>
con significados distintos que generan conflictos cuando se encuentran en el mismo documento XML.
<persona> <nombre>Andrea</nombre> <apellidos>Lluch Cruz</apellidos> </persona> <persona> <nombre>Andrea</nombre> <genero>F</genero> <edad>30</edad> </persona>
Para resolver el conflicto, se pueden utilizar espacios de nombres.
<?xml version="1.0" encoding="UTF-8"?> <root xmlns:ns1="http://www.example.com/ns1" xmlns:ns2="http://www.example.com/ns2"> <ns1:elemento1>Contenido del elemento 1</ns1:elemento1> <ns2:elemento2>Contenido del elemento 2</ns2:elemento2> <ns1:persona> <ns1:nombre>Andrea</ns1:nombre> <ns1:apellidos>Lluch Cruz</ns1:apellidos> </ns1:persona> <ns2:persona> <ns2:nombre>Andrea</ns2:nombre> <ns2:genero>H</ns2:genero> <ns2:edad>30</ns2:edad> </ns2:persona> </root>
En la siguiente sección se recogen ejercicios prácticos resueltos sobre documentos XML.