Ciao a tutti, documentandosi si può vedere come l'utilizzo dei namespace sia la soluzione a tutti i problemi per l'integrazione di più linguaggi XML.

Ho letto questa guida (http://xml.html.it/articoli/leggi/16...ei-namespaces/) ed ho capito che se io ho due dialetti XML e voglio integrarli si dice si possa fare come segue:


Allora ho a.xsd

codice:
<?xml version="1.0"?>

<xs:schema targetNamespace="http://www.aURL.com/a"
	xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.aURL.com/a"
	elementFormDefault="qualified">
	<xs:element name="a" type="tns:aType" />
	<xs:complexType name="aType">
		<xs:sequence>
			<xs:element name="uno" type="xs:string" />
			<xs:element name="due" type="xs:string" />
		</xs:sequence>
	</xs:complexType>
</xs:schema>
Ecco un'istanza valida a.xml (validata correttamente con Eclipse). Ovviamente gli ho messo a.xsd nello stesso path.

codice:
<?xml version="1.0"?>
<a xmlns="http://www.aURL.com/a"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.aURL.com/a a.xsd">
	<uno>cc</uno>
	<due>cc</due>
</a>
Ora supponiamo di voler integrare il dialetto b. Ecco b.xsd:

codice:
<?xml version="1.0"?>

<xs:schema targetNamespace="http://www.aURL.com/b"
	xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://www.aURL.com/b"
	elementFormDefault="qualified">

	<xs:element name="b" type="tns:bType" />

	<xs:complexType name="bType">
		<xs:sequence>
			<xs:element name="due" type="xs:string" />
			<xs:element name="tre" type="xs:string" />
		</xs:sequence>
	</xs:complexType>
</xs:schema>
Di cui presento la solita istanza valida b.xml:

codice:
<?xml version="1.0"?>
<b xmlns="http://www.aURL.com/b"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.aURL.com/b b.xsd">
	<due>cc</due>
	<tre>cc</tre>
[/b]
Il risultato dell'integrazione dovrebbe essere il seguente a_b.xml

codice:
<?xml version="1.0"?>
<a xmlns="http://www.aURL.com/a"
	xmlns:nw="http://www.aURL.com/b" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.aURL.com/a a.xsd http://www.aURL.com/b b.xsd">
	<uno>cc</uno>
	<due>cc</due>
	<nw:b>
		<nw:due>cc</nw:due>
		<nw:tre>cc</nw:tre>
	</nw:b>
	
</a>
eppure non valida.

Ecco l'errore:

Description Resource Path Location Type
cvc-complex-type.2.4.d: Invalid content was found starting with element 'nw:b'. No child element is expected at this point.

Come mai?

Chiedo delucidazioni. Grazie Ciao!