In un documento XML si fa riferimento ad un namespace utilizzando un attributo speciale (xmlns) associato al root element, come nel seguente esempio:
<articolo xmlns="http://www.dominio.it/xml/articolo">
Questo indica che l'elemento articolo ed i suoi sottoelementi utilizzano i nomi definiti nel namespace identificato dall'identificatore http://www.dominio.it/xml/articolo.
L'identificatore di un namespace può essere rappresentato da una qualsiasi stringa, purché sia univoca. Proprio per garantirne l'univocità, è prassi ormai consolidata utilizzare un URI (Uniform Resource Identifier) come identificatore.
È bene evidenziare che non è necessario che l'indirizzo specificato come identificatore di namespace corrisponda ad un file pubblicato sul Web. Esso è utilizzato semplicemente come identificatore ed il parser non accederà al Web per verificare l'esistenza dell'URL.
Per mettere in relazione un namespace con il relativo XML Schema occorre dichiararlo nel root element come nel seguente esempio:
<articolo
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.dominio.it/xml/articolo"
xmlns="http://www.dominio.it/xml/bibliografia"
xsi:schemaLocation="http://www.dominio.it/xml/articolo
articolo.xsd"
xsi:schemaLocation="http://www.dominio.it/xml/bibliografia
bibliografia.xsd"
>
L'attributo xmlns:xsi specifica la modalità con cui viene indicato il riferimento allo schema, mentre l'attributo xsi:schemaLocation indica il namespace ed il file in cui è definito il relativo XML Schema separati da uno spazio.
Eì possibile combinare più namespace facendo in modo che ciascun elemento utilizzato faccia riferimento al proprio namespace.
Occorre tener presente che quando si fa riferimento ad un namespace, questo riferimento vale per l'elemento corrente e per tutti gli elementi contenuti, a meno che non venga specificato un diverso namespace.
Il seguente esempio utilizza elementi tratti da due diversi namespace: uno relativo alla grammatica della struttura di un articolo e l'altro relativo alla grammatica di bibliografie:
<articolo xmlns="http://www.dominio.it/xml/articolo" titolo="Guida ad XML">
<paragrafo titolo="Introduzione">
<testo>
bla bla bla
</testo>
</paragrafo>
<paragrafo titolo="Bibliografia">
<bibliografia
xmlns="http://www.dominio.it/xml/bibliografia">
<autore>
Tizio
</autore>
<titolo>
Opera citata
</titolo>
<anno>
1999
</anno>
</bibliografia>
</paragrafo>
</articolo>
Riportare il riferimento ad un namespace per ogni elemento è di solito scomodo e rende di difficile lettura il documento XML. È possibile creare delle abbreviazioni per fare riferimento ai namespace.
Queste abbreviazioni sono costituite da caratteri alfanumerici seguiti da due punti (:) dichiarati nel root element ed utilizzati come prefissi dei nomi degli elementi. Il seguente esempio riporta il codice XML precedente facendo uso di questi prefissi:
<art:articolo titolo="Guida ad XML"
xmlns:art="http://www.dominio.it/xml/articolo"
xmlns:bibl="http://www.dominio.it/xml/bibliografia" >
<art:paragrafo titolo="Introduzione">
<art:testo>
bla bla bla
</art:testo>
</art:paragrafo>
<art:paragrafo titolo="Bibliografia">
<bibl:bibliografia>
<bibl:autore>
Tizio
</bibl:autore>
<bibl:titolo>
Opera citata
</bibl:titolo>
<bibl:anno>
1999
</bibl:anno>
</bibl:bibliografia>
</art:paragrafo>
</art:articolo>
Le dichiarazioni xmlns:art e xmlns:bibl assegnano i prefissi art: e bibl: ai relativi namespace e questi prefissi vengono utilizzati per ciascun elemento del documento XML.