I am using Xerces 2.6.0

I have not had much luck so far in dealing with embedded schema, unless I
use absolute paths.

If my document contains a 

xsi:schemaLocation="http://a internal.xsd" 

for validation, internal.xsd is found properly.


If internal.xsd contains:

  <xs:import namespace="http://b"; schemaLocation="http://server/b.xsd"/>

it finds the schema correctly as well.


Schema b.xsd contains a relative URI to c.xsd:

  <xs:import namespace="http://c"; schemaLocation="schema/c.xsd"/>


but when it tries to resolve the entity

    if (fEntityResolver) {
        DOMInputSource* is =
fEntityResolver->resolveEntity(resourceIdentifier->getPublicId(),
                                                           
resourceIdentifier->getSystemId(), 
                                                           
resourceIdentifier->getBaseURI());


publicID is NULL, systemId is "schema/c.xsd" and baseURI is NULL

If schema c.xsd contains a xml:base attribute
(xml:base="http://server/schema/";) the baseURI is not affected (NULL as
well).

Am I missing to set a processing flag?
Do I have to keep track of baseURI information myself?
Do I have to parse the parent schema to extract xml:base information?

Thanks for your help,

Willi

-----------------------------------------------------------------------------------
test.xml (local)
-----------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<a:x
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xsi:schemaLocation="http://a internal.xsd" 
xmlns:a="http://a"; 
xmlns:b="http://b"; 
xmlns:c="http://c";>

  <a:a xmlns:a="http://a"; xmlns:b="http://b"; xmlns:c="http://c";>
    <a:a_int>1</a:a_int>
    <b:b>
      <b:b_int>2</b:b_int>
      <c:c>
        <c:c_int>3</c:c_int>
      </c:c>
    </b:b>
  </a:a>
</a:x>

-----------------------------------------------------------------------------------
internal.xsd (local)
-----------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
xmlns:a="http://a"; 
xmlns:b="http://b"; 
xmlns:c="http://c"; 
targetNamespace="http://a"; 
elementFormDefault="qualified" 
attributeFormDefault="unqualified">

  <xs:import namespace="http://b"; schemaLocation="http://server/b.xsd"/>
  
  <xs:element name="x"/>
  <xs:element name="a">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="a_int" type="xs:int"/>
        <xs:element ref="b:b"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
</xs:schema>

-----------------------------------------------------------------------------------
b.xsd (server)
-----------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
xmlns:b="http://b"; 
xmlns:c="http://c"; 
targetNamespace="http://b"; 
elementFormDefault="qualified" 
attributeFormDefault="unqualified" 
xml:base="http://server/schema/";>

  <xs:import namespace="http://c"; schemaLocation="schema/c.xsd"/>
  <xs:element name="b">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="b_int" type="xs:int"/>
        <xs:element ref="c:c"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


-----------------------------------------------------------------------------------
c.xsd (server/schema)
-----------------------------------------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema 
xmlns:xs="http://www.w3.org/2001/XMLSchema"; 
xmlns:ns1="http://c"; targetNamespace="http://c"; 
elementFormDefault="qualified" 
attributeFormDefault="unqualified">

  <xs:element name="c">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="c_int" type="xs:int"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

-- 
View this message in context: 
http://www.nabble.com/nested-schema%2C-xml%3Abase%2C-relative-path%2C-absolute-path-tf4552390.html#a12991373
Sent from the Xerces - C - Users mailing list archive at Nabble.com.

Reply via email to