Namespaces en XML

Un Namespace puede ser declarado en cualquier elemento de un documento XML através de un atributo el cual por convención toma el nombre xmlns; el efecto ("scope") de estos Namespaces perdura hasta que el elemento inicial sea clausurado:


<Bebidas xmlns="http://www.bebidas.com/bebidas.dtd">


   <Whiskey>$70.00</Whiskey>
   <Cerveza>$30.00</Cerveza>
   <Vodka>$50.00</Vodka>
   <Ginebra>$55.00</Ginebra>

     <!-- Deja de su surtir efecto el DTD/Namespace anterior, 
      por la declaración de un nuevo Namespace -->

      <table xmlns="http://www.w3.org/TR/REC-html40">
        <tr>
	  <td>
	    El abuso de las bebidas anteriores son nocivas para la Salud 
	    y el Bolsillo, las siguientes surten menor efecto.
	  </td>
        </tr>
      </table>
                                   
      <!-- Reinicia efecto de bebidas.dtd porque ya fue clausurado
      el elemento con Namespace distinto -->  
   
   <Cafe>$10.00</Cafe>
   <Limonada>$15.00</Limonada>
   <Agua>Gratis</Agua>

</Bebidas>

Las declaraciones anteriores permiten mezclar elementos de distintos vocabularios en un solo documento, de esta manera se puede lograr una validación sin la necesidad de fragmentar el documento; cabe mencionar que las declaraciones anteriores no significan que se realizan búsquedas en los sitios http://www.bebidas.com y http://www.w3.org por los respectivos DTD's, dichos nombres son interpretados por el parser los cuales son resueltos a un archivo DTD residente en la máquina local.

Dentro de un elemento es posible declarar más de un Namespace lo cual facilita la tarea administrativa de un archivo XML; al hacerse este tipo de declaraciones se entra en los conceptos de Default Namespace y Namespaces con vocablo:

Documento XML datos.xml

<Bebidas xmlns="http://www.bebidas.com/bebidas.dtd"
         xmlns:html="http://www.w3.org/TR/REC-html40"> 


   <Whiskey>$70.00</Whiskey>
   <Cerveza>$30.00</Cerveza>
   <Vodka>$50.00</Vodka>
   <Ginebra>$55.00</Ginebra>
      <html:table>
        <html:tr>
	  <html:td>
	    El abuso de las bebidas anteriores son nocivas para la Salud 
	    y el Bolsillo, las siguientes surten menor efecto.
	  </html:td>
        </html:tr>
      </html:table>
   <Cafe>$10.00</Cafe>
   <Limonada>$15.00</Limonada>
   <Agua>Gratis</Agua>

</Bebidas>

En el fragmento se puede notar que fue anexado el prefijo html al segundo Namespace declarado, esto permite que através del vocablo html sean distinguidos los elementos pertenecientes a este Namespace, como se puede observar este vocablo es anexado al principio de cada elemento; para definir el nombre de este vocablo no existe ninguna restricción por lo que bien pudo ser nombrado osmosis o mihtml.

La primera declaración de Namespace no contiene ningún prefijo, por lo que es considerado el Default Namespace, esto es, cualquier elemento dentro del documento que no contenga ningún calificativo será considerado parte de este Namespace.

Menú Curso

XML y sus Orígenes

Manipulación y Proceso de XML

DOM, SAX y JDOM

Namespaces, Schemas y DTD's

XSL: XSLT, XPath y TraX

XMLRPC y SOAP (Web Services)

Diseño con XMLRPC

Diseño con SOAP .

Apéndice "A" (Procesando XML con parsers).

Apéndice "B" (Validando XML con Schemas y DTD's).

Apéndice "C" (XSL: XPath y "XSL Stylesheets").

Apéndice "D" (XMLRPC: Diseño).

Apéndice "E" (SOAP, WSDL, UDDI y WSIL : Diseño).