- Espacios de nombres XML
-
Espacios de nombres XML
Un espacio de nombres XML es una recomendación W3C para proporcionar elementos y atributos con nombre único en una instancia XML. Una instancia XML puede contener nombres de elementos o atributos procedentes de más de un vocabulario XML. Si a cada uno de estos vocabularios se le da un espacio de nombres, se resuelve la ambigüedad existente entre elementos o atributos que se llamen igual. Los nombres de elementos dentro de un espacio de nombres deben ser únicos.
Contenido
Uso de los espacios de nombres
Un ejemplo sería una instancia XML que contuviera referencias a un cliente y a un producto solicitado por éste. Tanto el elemento que representa el cliente como el que representa el producto pueden tener un elemento hijo llamado "numero_ID". Las referencias al elemento "numero_ID" podrían ser ambiguas, salvo que los elementos, con igual nombre pero significado distintos, se llevaran a espacios de nombres distintos que los diferenciaran.
<?xml version="1.0"?> <cli:cliente xmlns:cli='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/cliente' xmlns:ped='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/pedido'> <cli:numero_ID>1232654</cli:numero_ID> <cli:nombre>Fulanito de Tal</cli:nombre> <cli:telefono>99999999</cli:telefono> <ped:pedido> <ped:numero_ID>6523213</ped:numero_ID> <ped:articulo>Caja de herramientas</ped:articulo> <ped:precio>187,90</ped:precio> </ped:pedido> </cli:cliente> </lang>
Declaración de espacios de nombres
Un espacio de nombres se declara usando el atributo XML reservado
xmlns
, cuyo valor debe ser un identificador uniforme de recurso.Por ejemplo:
xmlns="http://www.w3.org/1999/xhtml"
Sin embargo, hay que destacar que el URI no se lee realmente como una dirección; se trata como una cadena de texto por el Parser XML. Por ejemplo, el propio http://www.w3.org/1999/xhtml no contiene código alguno, simplemente describe el espacio de nombres XHTML a lectores humanos. El hecho de usar una URL (tal como "http://www.w3.org/1999/xhtml") para identificar un espacio de nombres, en lugar de una simple cadena (como "xhtml"), reduce la posibilidad de que diferentes espacios de nombres usen identificadores iguales. Los identificadores de los espacios de nombres no necesitan seguir las convenciones de las direcciones de internet, aunque a menudo lo hagan.
La declaración puede incluir también un prefijo corto con el que los elementos y atributos pueden identificarse, por ejemplo:
xmlns:xhtml="http://www.w3.org/1999/xhtml"
Un espacio de nombres XML no necesita que su vocabulario sea definido, aunque es una buena práctica utilizar un DTD o un esquema XML para definir la estructura de datos en la ubicación URI del espacio de nombres.
Alcance de los espacios de nombres
El alcance de la declaración de un prefijo de espacio de nombres comprende desde la etiqueta de inicio de un elemento XML, en la que se declara, hasta la etiqueta final de dicho elemento XML. En las etiquetas vacías, correspondientes a elementos sin "hijos", el alcance es la propia etiqueta.
Espacio de nombres por defecto
Cuando se define en la etiqueta de inicio de un elemento XML, se aplica a todos elementos sin prefijo del ámbito del elemento, pero no a los atributos.
<?xml version="1.0"?> <cliente xmlns='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/cliente' xmlns:ped='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/pedido'> <numero_ID>1232654</numero_ID> <nombre>Fulanito de Tal</nombre> <telefono>99999999</telefono> <ped:pedido> <ped:numero_ID>6523213</ped:numero_ID> <ped:articulo>Caja de herramientas</ped:articulo> <ped:precio>187,90</ped:precio> </ped:pedido> </cliente>
Unicidad de los atributos
Ningún elemento XML puede tener dos atributos con el mismo nombre expandido. El siguiente caso violaría esta restricción, ya que los dos atributos del elemento tendrían el mismo nombre expandido (http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/ns:atributo).
<?xml version="1.0"?> <raiz xmlns:ns1="http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/ns" xmlns:ns2="http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/ns"> <elemento ns1:atributo="hola" ns2:atributo="adios" /> </raiz>
Enlaces externos
Categoría: XML
Wikimedia foundation. 2010.