Gli ultimi tutorial di sviluppo web
 

XML Namespace


Namespace XML forniscono un metodo per evitare conflitti tra i nomi degli elementi.


Nome conflitti

In XML, i nomi degli elementi sono definiti dallo sviluppatore. Questo si traduce spesso in un conflitto quando si cerca di mescolare documenti XML da diverse applicazioni XML.

Questo XML trasporta informazioni tabella HTML:

<table>
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

Questo XML trasporta informazioni su un tavolo (a piece of furniture) :

<table>
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Se questi frammenti XML sono stati sommati, ci sarebbe un conflitto di nomi. Entrambi contengono un <table> elemento, ma gli elementi hanno contenuto e significato diverso.

Un utente o un'applicazione XML non sapranno come gestire queste differenze.


Risolvere il conflitto nome utilizzando un prefisso

Conflitti di nomi in XML possono essere facilmente evitati con un prefisso del nome.

Questo XML trasporta 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 precedente, non vi sarà alcun conflitto perché i due <table> elementi hanno nomi diversi.


Namespace XML - Le xmlns attributo

Quando si utilizzano i prefissi in XML, un namespace deve essere definito per il prefisso.

Lo spazio dei nomi può essere definita da un xmlns attributo nel tag di inizio di un elemento.

La dichiarazione dello spazio dei nomi ha la seguente sintassi. xmlns: prefix =" 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="http://www.w3ii.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:

I xmlns attribuiscono in primo <table> elemento dà l'h: prefisso un namespace qualificato.

I xmlns attribuiscono al secondo <table> elemento dà la f: prefisso un namespace qualificato.

Quando un namespace viene definita per un elemento, tutti gli elementi secondari con lo stesso prefisso sono associati con lo stesso spazio.

Gli spazi dei nomi possono anche essere dichiarati nella elemento principale XML:

<root
xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3ii.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>

Note: Lo spazio dei nomi URI non viene utilizzato dal parser per cercare informazioni.

Lo scopo di utilizzare un URI è quello di dare lo spazio dei nomi un nome univoco.

Tuttavia, le aziende spesso usano lo spazio dei nomi come un puntatore a una pagina web contenente informazioni namespace.


Uniform Resource Identifier (URI)

Un Uniform Resource Identifier (URI) è una stringa di caratteri che identifica una risorsa Internet.

L'URI più comune è la Uniform Resource Locator (URL) che identifica un indirizzo di dominio Internet. Un altro, non è il tipo così comune di URI è il Universal Resource Name (URN) .


Gli spazi dei nomi predefiniti

Definizione di uno spazio dei nomi di default per un elemento ci salva da utilizzare prefissi in tutti gli elementi figlio. Ha la seguente sintassi:

xmlns="namespaceURI"

Questo XML trasporta informazioni tabella HTML:

<table xmlns="http://www.w3.org/TR/html4/">
  <tr>
    <td>Apples</td>
    <td>Bananas</td>
  </tr>
</table>

Questo XML trasporta informazioni su un mobile:

<table xmlns="http://www.w3ii.com/furniture">
  <name>African Coffee Table</name>
  <width>80</width>
  <length>120</length>
</table>

Gli spazi dei nomi in Real Usa

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 volete saperne di più su XSLT, si prega di leggere la nostra XSLT Tutorial .