<direccion>
<calle>Avd. Diagonal 8</calle>
<ciudad>Barcelona</ciudad>
<provincia>Barcelona</ciudad>
<pais>Espaa</pais>
</direccion>
<?xml version=1.0" encoding="iso-8859-1"?>
<servidor>
<url>http://www.palotes.com</url>
<direccion>123.45.67.8</direccion>
</servidor>
Los dos documentos XML anteriores tienen en comn el elemento direccion. Por el momento son
dos vocabularios diferentes pero puede ser que en algn momento tengamos que integrarlos en un
mismo documento XML. Supongamos que ambos documentos juntos nos ofrecen informacin sobre
la localizacin de una empresa: su direccin fsica y su direccin en Internet. Est claro que el
elemento direccin va a provocar problemas. Podramos renombrarlo y en el segundo documento
En la que como podemos observar los elementos de ambos vocabularios estn bien
diferenciados.
Qu es exactamente un "namespace"?
Un "namespace" XML es una coleccin de nombres, identificados por un URI, que se utiliza en los
documentos XML para identificar los nombres de los elementos y atributos.
Declaracin de un "namespace"
Como podemos observar en el ejemplo, la declaracin del "namespace" se realiza mediante el
atributo xmlns, cuyo valor es un URI que identifica de forma unvoca el nombre.
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
El atributo xmlns puede ir seguido del carcter dos puntos :, opcional, y el nombre del
"namespace":
Por tanto la declaracin de un espacio de nombres consta de :
Palabra clave xmlns definida por el W3C para identificar espacios de nombres XML. Esta se
separa del prefijo mediante dos puntos ( : ).
Prefijo o nombre abreviado del espacio de nombres que se utiliza en la declaracin de
todos los elementos y atributos que pertenecen al mismo.
Definicin que corresponde al URI que define el espacio de nombres de forma exclusiva.
EJERCICIO 2:
Realice un tercer archivo xml que integre los elementos de los 2 archivos siguientes :
<?xml version = 1.0 ?>
<archivos>
<fichero nombrefichero = libro.xml>
<descripcion>Una lista de libros</descripcion>
</fichero>
</archivo>
<empresa>
<texto:directorio xmlns:texto="http://www.practica.com/uno">
<texto:fichero nombrefichero="libro.xml">
<texto:descripcion>Lista de Libros</texto:descripcion>
</texto:fichero>
</texto:directorio>
<imagen:catalogo xmlns:imagen="http://www.practica.com/uno">
<imagen:fichero nombrefichero="gracioso.jpg">
<imagen:descripcion>Un dibujo gracioso</imagen:descripcion>
<imagen:tamao ancho="200" largo="200"/>
</imagen:fichero>
</imagen:catalogo>
</empresa>
Es muy importante tener en cuenta que los URIs slo se utilizan para que el nombre sea
nico, no son enlaces, ni tienen que contener informacin, sin embargo, tambin los URIs sirven
para acceder a recursos. Los XML Namespaces describen cmo se puede asociar una URI con
cada etiqueta y atributo en un documento XML, si bien, para qu se utiliza el URI depende de la
aplicacin que lea el URI. Por ejemplo, RDF, (http://www.w3.org/TR/REC-rdf-syntax/) el estndar del
W3C para metadatos, lo usa para enlazar cada metadato a un archivo definiendo el tipo de ese
metadato).
<aaa >
<bbb >
<ccc />
</bbb>
<BBB >
<CCC />
</BBB>
<x111 >
<x222 />
</x111>
</aaa>
Los nombres de atributo que comienzan con xmlns se usan slo para declarar
namespaces. Se puede declarar un namespace en cada elemento que se use,
pero est forma de actuar es pesada y el cdigo resultante es bastante ilegible.
Ir declarando namespaces con cada elemento como en Ejemplo 2 inducira a error y sera
muy poco prctico. Segn el standar, se puede realizar esta tarea de varias maneras. La
declaracin de namespace dada para el elemento que se analiza tambin es valida para
todos los elementos que se anidan dentro de l ( para todos sus hijos o descendientes)
<aaa >
<lower:bbb xmlns:lower = "http://zvon.org/lowercase" >
<lower:ccc />
</lower:bbb>
<lower:BBB xmlns:lower = "http://zvon.org/uppercase" >
<lower:CCC />
</lower:BBB>
<lower:x111 xmlns:lower = "http://zvon.org/xnumber" >
<lower:x222 />
</lower:x111>
</aaa>
<aaa >
<bbb xmlns = "http://zvon.org/lowercase" >
<ccc />
</bbb>
<BBB xmlns = "http://zvon.org/uppercase" >
<CCC />
</BBB>
<x111 xmlns = "http://zvon.org/xnumber" >
<x222 />
</x111>
</aaa>
10
11
12