XML Espacio de nombres
Los espacios de nombres XML proporcionan una forma de evitar conflictos de nombres de elementos.
Conflicto de nombres
En XML, los nombres de elementos son definidos por el desarrollador. Cuando dos documentos diferentes usan el mismo nombre de elemento, se produce un conflicto de nombres.
Este XML contiene información de una tabla HTML:
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Este documento XML contiene información sobre una mesa (un mueble):
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Si estos dos documentos XML se usan juntos, se producirá un conflicto de nombres porque ambos documentos contienen un elemento <table> con diferente contenido y definición.
El analizador XML no puede determinar cómo manejar este tipo de conflicto.
Usar prefijos para evitar conflictos de nombres
Los conflictos de nombres en XML pueden evitarse fácilmente mediante el uso de prefijos de nombres.
Este XML contiene información de una tabla HTML y de un mueble:
<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 hay conflicto porque los dos elementos <table> tienen nombres diferentes.
Espacios de nombres XML - atributo xmlns
Cuando se usa un prefijo en XML, un llamadoespacio de nombresdebe ser definido.
El espacio de nombres se define en la etiqueta de apertura del elemento, en elatributo xmlnsde la etiqueta de apertura del elemento.
La sintaxis para declarar un espacio de nombres es la siguiente: xmlns:prefijo="URI"。
<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="http://www.w3cschool.cc/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 de la etiqueta <table> define los espacios de nombres calificados para los prefijos h: y f:.
Cuando un espacio de nombres se define en la etiqueta de apertura de un elemento, todos los elementos secundarios con el mismo prefijo se asocian con el mismo espacio de nombres.
Los espacios de nombres pueden declararse en los elementos donde se usan o en el elemento raíz del XML:
xmlns:f="http://www.w3cschool.cc/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 URI del espacio de nombres no es utilizado por el analizador para buscar información.
Su propósito es dar al espacio de nombres un nombre único. Sin embargo, muchas empresas suelen usar el espacio de nombres como puntero a una página web real que contiene información sobre el espacio de nombres.
Visitahttp://www.w3.org/TR/html4/。
Identificador Uniforme de Recursos (URI, del inglés Uniform Resource Identifier)
Identificador Uniforme de Recursos(URI) es una cadena de caracteres que puede identificar recursos en Internet.
El URI más común es elLocalizador Uniforme de Recursos(URL). Otro URI menos común es elNombre Uniforme de Recursos(URN)。
En nuestro ejemplo, solo usamos URL.
Espacio de nombres predeterminado
Definir un espacio de nombres predeterminado para un elemento nos ahorra el trabajo de usar prefijos en todos los elementos secundarios. Su sintaxis es la siguiente:
Este XML contiene información de una tabla HTML:
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Este XML contiene información sobre un mueble:
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Espacios de nombres en la práctica
XSLT es un lenguaje XML que se utiliza para convertir documentos XML a otros formatos, como HTML.
En el siguiente documento XSLT, puede ver que la mayoría de las etiquetas son etiquetas HTML.
Las etiquetas no HTML tienen el prefijo xsl y están identificadas por este espacio de nombres: xmlns:xsl="http://www.w3.org/1999/XSL/Transform":
<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>
</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 aprender sobre XSLT, en nuestrapágina de iniciobusque el tutorial de XSLT.
Otras extensiones