XML y DTD. Espacios de nombres

Actualizado el 01/04/2007 < > 0 Comentarios

Resúmen: Uso de los espacios de nombres en el lenguaje XML.

Meneame Bitacoras

Los espacios de nombres (namespaces)

XML es un estándar diseñado para permitir que se comparta información con facilidad. ¿Qué pasaría si uniésemos información en XML procedente de dos fuentes diferentes para enviarla a una tercera? ¿Podríamos en ese caso tener algún conflicto por coincidencia del nombre de las etiquetas? Imaginemos el siguiente caso: un proveedor de Internet guarda todos sus datos en XML. La sección comercial almacena la dirección de la vivienda del cliente en un campo llamado <direccion>. Por otro lado, el servicio de asistencia al cliente guarda en <direccion> la dirección de correo electrónico del cliente, y finalmente el centro de control de red guarda en <direccion> la dirección IP del ordenador del cliente. Si unimos en un sólo fichero lo procedente de las tres divisiones de la empresa, nos podemos encontrar con:

<cliente>
...
<direccion>Calle Real</direccion>
...
<direccion>ventas@cliente.com
Esta dirección de correo electrónico está
siendo protegida de "spam bots",
necesitas habilitar Javascript para poder verlo.
</direccion>
...
lt;direccion>192.168.168.192</direccion>
...
</cliente>

Evidentemente en este caso tendríamos un problema, ya que no podríamos distinguir el significado de <direccion> en cada uno de los casos. Para ello, en 1999 el W3C definió una extensión de XML llamada espacios de nombres (namespaces) que permite resolver conflictos y ambigüedades de este tipo.

Uso de los espacios de nombres

Los espacios de nombres son un prefijo que ponemos a las etiquetas de XML para indicar a qué contexto se refiere la etiqueta en cuestión. En el ejemplo anterior podríamos definir:

<red:direccion>: para uso por el centro de control de red.
<aten:direccion>: para uso por el servicio de atención al cliente.
<comer:direccion>: para uso por el departamento comercial.

De esta forma, nuestro elemento queda compuesto así:

<cliente>
...
<comer:direccion>Calle Real</comer:direccion>
....
<aten:direccion>ventas@cliente.com
Esta dirección de correo electrónico
está siendo protegida de "spam bots",
necesitas habilitar Javascript para poder verlo.
</aten:direccion>
....
<red:direccion>192.168.168.192</red:direccion>
...
</cliente>

Para usar un espacio de nombres en un documento, debemos declararlo previamente. Esta declaración puede tener lugar en el elemento raíz del documento de la siguiente forma:

<?xml version=“1.0” encoding=“iso-8859-1”?>
<carteraclientes
xmlns:comer=“http://www.empresa.com/comercial”
xmlns:aten=“http://www.empresa.com/atencion”
xmlns:red=“http://www.empresa.com/red”>
<cliente>
...
<comer:direccion>Calle Real</comer:direccion>
...
<aten:direccion>ventas@cliente.com
Esta dirección de correo electrónico
está siendo protegida de "spam bots",
necesitas habilitar Javascript para poder verlo.
</aten:direccion>
...
<red:direccion>192.168.168.192</red:direccion>
...
</cliente>
</carteraclientes>

La definición consta de unos atributos xmlns (XML namespace), donde proporcionamos el prefijo que usaremos para el espacio de nombres y una URI (Uniform Resource Identifier) que será un identificador único del espacio de nombres.

Meneame Bitacoras

Publicado el 01/04/2007, última actualización 01/04/2007.

Autor: Carles Mateu

URL: No especificado

(Subir al texto)

Añadir Comentario

* Campos obligatorios