Espacios de nombres XML
Los espacios de nombres XML proporcionan un método para evitar conflictos de nombres de elementos.
Conflictos de nombres
En XML, los nombres de los elementos los define el desarrollador. Esto a menudo genera un conflicto al intentar mezclar documentos XML de diferentes aplicaciones XML.
Este XML lleva información de la tabla HTML:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Este XML lleva información sobre una mesa (un mueble):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Si estos fragmentos XML se agregaran juntos, habría un conflicto de nombres. Ambos contienen un elemento <table>, pero los elementos tienen diferente contenido y significado.
Un usuario o una aplicación XML no sabrá cómo manejar estas diferencias.
Resolviendo el conflicto de nombres usando un prefijo
Los conflictos de nombres en XML se pueden evitar fácilmente usando un prefijo de nombre.
Este XML contiene información sobre una tabla HTML y un mueble:
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
En el ejemplo anterior, no habrá conflicto porque los dos elementos <table> tienen nombres diferentes.
Espacios de nombres XML: el atributo xmlns
Al usar prefijos en XML, se debe definir un espacio de nombres para el prefijo.
El espacio de nombres se puede definir mediante un atributo xmlns en la etiqueta de inicio de un elemento.
La declaración del espacio de nombres tiene la siguiente sintaxis. xmlns: prefijo =" URI ".
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="https://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
En el ejemplo anterior:
El atributo xmlns en el primer elemento <table> le da al prefijo h: un espacio de nombres calificado.
El atributo xmlns en el segundo elemento <table> le da al prefijo f: un espacio de nombres calificado.
Cuando se define un espacio de nombres para un elemento, todos los elementos secundarios con el mismo prefijo se asocian con el mismo espacio de nombres.
Los espacios de nombres también se pueden declarar en el elemento raíz XML:
<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="https://www.w3schools.com/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
Nota: el analizador no utiliza el URI del espacio de nombres para buscar información.
El propósito de usar un URI es darle al espacio de nombres un nombre único.
Sin embargo, las empresas suelen utilizar el espacio de nombres como puntero a una página web que contiene información sobre el espacio de nombres.
Identificador uniforme de recursos (URI)
Un identificador uniforme de recursos (URI) es una cadena de caracteres que identifica un recurso de Internet.
El URI más común es el Localizador uniforme de recursos (URL) que identifica una dirección de dominio de Internet. Otro tipo de URI no tan común es el nombre de recurso uniforme (URN).
Espacios de nombres predeterminados
Definir un espacio de nombres predeterminado para un elemento nos evita usar prefijos en todos los elementos secundarios. Tiene la siguiente sintaxis:
xmlns="namespaceURI"
Este XML lleva información de la tabla HTML:
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Este XML contiene información sobre un mueble:
<table xmlns="https://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Espacios de nombres en uso real
XSLT es un lenguaje que se puede utilizar para transformar documentos XML en otros formatos.
El documento XML a continuación, es un documento utilizado para transformar XML en HTML.
El espacio de nombres "http://www.w3.org/1999/XSL/Transform" identifica elementos XSLT dentro de un documento HTML:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr>
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Si desea obtener más información sobre XSLT, lea nuestro Tutorial XSLT .