Definición de espacios de nombres
Un espacio de nombres en XML es una forma de identificar de manera única los elementos y atributos dentro de un documento XML.
Se utiliza para evitar que haya elementos con el mismo nombre pero con significados diferentes, especialmente cuando se integran
múltiples XML de diferentes fuentes o esquemas.
<catalog xmlns:book="http://example.com/books">
<book:title>XML Guide</book:title>
</catalog>
Donde book es el prefijo asociado con el espacio de nombres http://example.com/books.
La URI del espacio de nombres es una cadena que identifica de manera única el espacio de nombres.
Los espacios de nombres ayudan a organizar y evitar conflictos en documentos XML al proporcionar identificadores únicos para los elementos y atributos.
Referencia de espacios de nombres
En XML, un espacio de nombres se define mediante un prefijo asociado con una URI (Uniform Resource Identifier). La URI no
necesariamente tiene que ser una URL válida, aunque normalmente se usa una URL como estándar W3C.
Por qué usar URLs
Se utilizan URLs como identificadores porque:
- Son únicas por diseño
- Ayudan a evitar conflictos de nombres
- Si cada desarrollador usa su propio dominio, se minimizan colisiones
Ejemplos de URIs
http://ejemplo.com/libros
http://ejemplo.com/usuarios
Estas URIs identifican espacios de nombres diferentes aunque no necesariamente sean páginas web accesibles.
Prefijos en espacios de nombres
El prefijo es un alias que se asocia a un espacio de nombres en un documento XML. Es una forma abreviada de referirse a la
URI en lugar de escribir la URI completa cada vez.
<libro xmlns:lib="http://www.ejemplo.com/libros">
<lib:titulo>Introducción a XML</lib:titulo>
</libro>
En este ejemplo:
- Se ha definido el prefijo
lib para el espacio de nombres http://www.ejemplo.com/libros
- El elemento
titulo ahora está prefijado como lib:titulo
- Los prefijos ayudan a distinguir estructuras similares dentro de un XML
Uso de espacios de nombres en atributos
Los espacios de nombres también pueden ser usados en atributos, no solo en elementos. Esto es útil cuando se tienen elementos o atributos que deben diferenciarse
según el contexto en que se usan.
<?xml version="1.0" encoding="UTF-8"?>
<producto xmlns:p="http://www.ejemplo.com/productos"
xmlns:desc="http://www.ejemplo.com/descripciones">
<p:item desc:info="Edición limitada">
<p:nombre>Smartphone X</p:nombre>
<p:precio moneda="USD">799</p:precio>
</p:item>
</producto>
Espacios de nombres definidos:
- p → Para la información del producto
- desc → Para información descriptiva
Uso en atributos:
desc:info="Edición limitada" → Atributo con prefijo
moneda="USD" → Atributo sin prefijo (espacio por defecto)
Posibles conflictos y resolución
Cuando trabajas con varios espacios de nombres, es importante evitar conflictos de prefijos y de nombres. Si hay elementos o
atributos con el mismo nombre, aunque tengan diferentes espacios de nombres, el prefijo ayuda a diferenciarlos.
- ✅ Cada espacio de nombres debe tener un prefijo único
- ✅ Evita reutilizar prefijos para diferentes espacios de nombres
- ✅ Usa prefijos descriptivos pero cortos
- ✅ Define todos los espacios de nombres en el elemento raíz cuando sea posible
¡Cuidado! Si dos espacios de nombres se definen en el mismo documento XML con el mismo prefijo, se crearía ambigüedad y el documento sería inválido.