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!