Spazi dei nomi XML
Gli spazi dei nomi XML forniscono un metodo per evitare conflitti tra i nomi degli elementi.
Conflitti di nome
In XML, i nomi degli elementi sono definiti dallo sviluppatore. Ciò si traduce spesso in un conflitto quando si tenta di combinare documenti XML da diverse applicazioni XML.
Questo XML contiene informazioni sulla tabella HTML:
<table>
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Questo XML contiene informazioni su un tavolo (un mobile):
<table>
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Se questi frammenti XML venissero aggiunti insieme, si verificherebbe un conflitto di nomi. Entrambi contengono un elemento <table>, ma gli elementi hanno contenuto e significato diversi.
Un utente o un'applicazione XML non saprà come gestire queste differenze.
Risolvere il conflitto di nomi utilizzando un prefisso
I conflitti di nome in XML possono essere facilmente evitati utilizzando un prefisso del nome.
Questo XML contiene informazioni su una tabella HTML e un mobile:
<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>
Nell'esempio sopra, non ci sarà alcun conflitto perché i due elementi <table> hanno nomi diversi.
Spazi dei nomi XML - L'attributo xmlns
Quando si utilizzano prefissi in XML, è necessario definire uno spazio dei nomi per il prefisso.
Lo spazio dei nomi può essere definito da un attributo xmlns nel tag iniziale di un elemento.
La dichiarazione dello spazio dei nomi ha la seguente sintassi. xmlns: prefisso =" 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>
Nell'esempio sopra:
L'attributo xmlns nel primo elemento <table> fornisce al prefisso h: uno spazio dei nomi qualificato.
L'attributo xmlns nel secondo elemento <table> fornisce al prefisso f: uno spazio dei nomi qualificato.
Quando viene definito uno spazio dei nomi per un elemento, tutti gli elementi figlio con lo stesso prefisso sono associati allo stesso spazio dei nomi.
I namespace possono anche essere dichiarati nell'elemento radice 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: l'URI dello spazio dei nomi non viene utilizzato dal parser per cercare informazioni.
Lo scopo dell'utilizzo di un URI è dare allo spazio dei nomi un nome univoco.
Tuttavia, le aziende utilizzano spesso lo spazio dei nomi come puntatore a una pagina Web contenente informazioni sullo spazio dei nomi.
Uniform Resource Identifier (URI)
Un Uniform Resource Identifier (URI) è una stringa di caratteri che identifica una risorsa Internet.
L'URI più comune è l' Uniform Resource Locator (URL) che identifica un indirizzo di dominio Internet. Un altro tipo di URI non così comune è l' Uniform Resource Name (URN).
Spazi dei nomi predefiniti
La definizione di uno spazio dei nomi predefinito per un elemento ci evita di utilizzare prefissi in tutti gli elementi figlio. Ha la seguente sintassi:
xmlns="namespaceURI"
Questo XML contiene informazioni sulla tabella HTML:
<table xmlns="http://www.w3.org/TR/html4/">
<tr>
<td>Apples</td>
<td>Bananas</td>
</tr>
</table>
Questo XML contiene informazioni su un mobile:
<table xmlns="https://www.w3schools.com/furniture">
<name>African Coffee Table</name>
<width>80</width>
<length>120</length>
</table>
Spazi dei nomi in uso reale
XSLT è un linguaggio che può essere utilizzato per trasformare documenti XML in altri formati.
Il documento XML di seguito è un documento utilizzato per trasformare XML in HTML.
Lo spazio dei nomi "http://www.w3.org/1999/XSL/Transform" identifica gli elementi XSLT all'interno di 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>
Se vuoi saperne di più su XSLT, leggi il nostro Tutorial XSLT .