Namespace XML

I namespace servono a dichiarare l’appartenenza di elementi e attributi ad un particolare linguaggio XML. I Namespace XML nascono dall’esigenza di crear un proprio linguaggio di mark-up (grandissimo vantaggio tra l’altro dei linguaggi XML). Pertanto, i namespace XML ci offrono la grande libertà di crearci un nostro linguaggio lasciandoci decidere come vogliamo strutturarlo e quali tag utilizzare. Le dichiarazioni di namespace sono inserite nei tag di apertura di un documento XML.

Namespace XML

Namespace XML


LA SINTASSI DEI NAMESPACE
Si possono avere tre tipologie di dichiarazioni di namespace:
1)Namespace Esplicito

<name xmlns:tns="uri">

Dichiarazione inserita nel tag di apertura che supponiamo essere name dove tns è il prefisso del namespace e che tutti i nomi preceduti da tns: appartengono al namespace indicato nella uri. Esempio tutti gli elementi con prefisso xs: sono situati nel namespace alla uri http://www.w3.org/2001/XMLSchema.

<definitions xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<types>
		<xs:schema targetNamespace="http://www.html.it/php_ws_soap">
			<xs:element name="name" type="xs:string"/>
			<xs:element name="weburl" type="xs:string"/>
		</xs:schema>
	</types>
.....
</definitions>

2)Namespace Standard

<name xmlns="uri">

Indica il namespace di appartenenza per tutti gli elementi privi di un prefisso esplicito, come il caso visto sopra. Ad esempio nel codice di seguito i tag message e part appartengono al namespace standard situato alla uri http://schemas.xmlsoap.org/wsdl/.

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/">
	<message name="getWebUrl">
		<part name="name" type="xs:string"/>
	</message>
.....
</definitions>

3)Namespace di default

<name xmlns="uri" xmlns:xs="uri">

Il namespace standard corrisponde tra l’altro anche al namespace XML di default, non a caso nell’elemento radice di un documento XML è possibile specificare più namespace.
Nell’esempio sotto possiamo notare una composizione dei due esempi precedenti dove: types,message e part appartengono al namespace standard (uri http://schemas.xmlsoap.org/wsdl/) mentre xs:schema e xs:element appartengono al namespace esplicito (uri http://www.w3.org/2001/XMLSchema).

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
        <types>
		<xs:schema targetNamespace="http://www.html.it/php_ws_soap">
			<xs:element name="name" type="xs:string"/>
			<xs:element name="weburl" type="xs:string"/>
		</xs:schema>
	</types>
	<message name="getWebUrl">
		<part name="name" type="xs:string"/>
	</message>
.....
</definitions>

Saper manipolare i namespace è di fondamentale importanza per poter gestire documenti XML complessi.

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema">
        </b>
        <types>
		<xs:schema targetNamespace="http://www.html.it/php_ws_soap">
			<xs:element name="name" type="xs:string"/>
			<xs:element name="weburl" type="xs:string"/>
		</xs:schema>
	</types>
	<c xmlns="ns3"></d></c>
        <e xmlns:xsl="ns4" xsl:attr="val">
                <xsl:f>testo</xsl:f>
        </e>
</definitions>

E’ inoltre possibile definire dei namespace annidati in degli elementi del documento XML, ad esempio nel codice sopra riportato vediamo che il namespace ns3 contiene gli elementi c,d ed il namespace ns4 contiene gli elementi xsl:f e l’attributo xsl:attr.

Namespace XML ultima modidfica: 2015-01-04T16:29:42+01:00 da Gianluca Di Vincenzo
Posted in: SOA

By on 4 Gennaio 2015

Tagged: , , , , ,