W3C home > Mailing lists > Public > xmlschema-dev@w3.org > March 2001

Re: [Moderator Action] Inheritence

From: Henry S. Thompson <ht@cogsci.ed.ac.uk>
Date: 19 Mar 2001 11:36:08 +0000
To: "Jean-Guillaume LALANNE" <jean-guillaume.lalanne@coming.fr>
Cc: <xmlschema-dev@w3.org>
Message-ID: <f5belvu6lef.fsf@cogsci.ed.ac.uk>
"Jean-Guillaume LALANNE" <jean-guillaume.lalanne@coming.fr> writes:

> excuse me if this message is unappropriate for this list..
> I'm a newbie to the list..
> I have a question..
> I have been trying to use inheritence with my XML schemas but up to now I
> don't really manage...
> 
> It looks like I have a problem with the namespace declaration in my XML
> Instance.
> 
> Here is the problem :
> 
> Schema 1: AMContent.xsd
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema
> targetNamespace="http://www.coming.fr/validation/WHIP-1.0/Schemas/whip-amcontent"
> xmlns:whip-amcontent="http://www.coming.fr/validation/WHIP-1.0/Schemas/whip-amcontent"
> xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
> 
>  
>  <xsd:element name="site-content">
>   <xsd:complexType>
>    <xsd:sequence>
>     <xsd:element ref="whip-amcontent:module-list"/>
>    </xsd:sequence>
>   </xsd:complexType>
>  </xsd:element>
>  
>  <xsd:element name="module-list">
>  
>   <xsd:complexType>
>    <xsd:sequence>
>     <xsd:element ref="whip-amcontent:module" minOccurs="0"
> maxOccurs="unbounded"/>
>    </xsd:sequence>
>   </xsd:complexType>
>  </xsd:element>
>  
>  <xsd:element name="module" type="whip-amcontent:moduleType"/>
>  
>   <xsd:complexType name="moduleType">
>   <xsd:sequence>
>    <xsd:element ref="whip-amcontent:name"/>
>    <xsd:element ref="whip-amcontent:description"/>
>    <xsd:element ref="whip-amcontent:details-list"/>
>   </xsd:sequence>
>  </xsd:complexType>
>  
>  <xsd:element name="name" type="xsd:string"/>
>  
>  <xsd:element name="description" type="xsd:string"/>
>  
>  <xsd:element name="details-list">
>   <xsd:complexType>
>    <xsd:sequence>
>     <xsd:element ref="whip-amcontent:details" minOccurs="0"
> maxOccurs="unbounded"/>
>    </xsd:sequence>
>   </xsd:complexType>
>  </xsd:element>
>  
>  <xsd:element name="details" type="whip-amcontent:detailsType"/>
>  
>  <xsd:complexType name="detailsType"/>
> 
>  
> </xsd:schema>
> 
> Schema 2: editorial.xsd
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsd:schema
> targetNamespace="http://www.coming.fr/validation/WHIP-1.0/Schemas/whip-amcontent"
> xmlns:whip-amcontent="http://www.coming.fr/validation/WHIP-1.0/Schemas/whip-amcontent"
> xmlns:xsd="http://www.w3.org/2000/10/XMLSchema">
>  
>  <xsd:include
> schemaLocation="D:\Users\jgl\WHIP1\src\coming\whip\testing_area\AMContent.xsd"/>
>  
>  <xsd:element name="editorial">
>   <xsd:complexType>
>    <xsd:complexContent>
>     <xsd:extension base="whip-amcontent:moduleType"/>
>    </xsd:complexContent>
>   </xsd:complexType>
>  </xsd:element>
> 
> </xsd:schema>
> 
> XML Instance : amcontent-test.xml
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <site-content
> xmlns="http://www.coming.fr/validation/WHIP-1.0/Schemas/whip-amcontent"
> xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
> xsi:schemaLocation="http://www.coming.fr/validation/WHIP-1.0/Schemas/whip-amcontent
> D:\Users\jgl\WHIP1\src\coming\whip\testing_area\AMContent.xsd">
> 
>  <module-list>
>   <editorial xsi:type="whip-amcontent:moduleType">
>    <name>aaaaa</name>
>    <description>bbbbb</description>
>    <details-list/>
>   </editorial>
>  </module-list>
>  
> </site-content>
> 
> Of course, this document is not validated by XMLSpy or xerces1.3.0, because
> 
> the only schema loaded is the schema located at
> D:\Users\jgl\WHIP1\src\coming\whip\testing_area\AMContent.xsd....
> 
> And in this schema, the element editorial doesn't exist in the namespace
> "whip-amcontent".
> 
> To validate my XML instance, I will need a way to load also the
> editorial.xsd schema file to make the parser aware in the current
> working namespace ("whip-amcontent") of the element "editorial"
> ...!!!!
> 
> I have been thinking about pointing the file editorial.xsd from the
> file AMContent.xsd with the "<xsd:include>" feature. But this is
> definitively NOT the solution because the editorial.xsd already
> points onto the AMContent.xsd file and it is causing a fatal error
> in the parsers (infinite loop).

That's a bug in those parsers -- the spec. explicitly says they should 
handle such situations.

> So my question is how can I tell the parser to also parse my
> file editorial.xsd to validate my XML file...????

A simpler alternative which should work is simply to use editorial.xsd 
in the schemaLocation hint in your instance, instead of AMContent.xsd.

ht
-- 
  Henry S. Thompson, HCRC Language Technology Group, University of Edinburgh
          W3C Fellow 1999--2001, part-time member of W3C Team
     2 Buccleuch Place, Edinburgh EH8 9LW, SCOTLAND -- (44) 131 650-4440
	    Fax: (44) 131 650-4587, e-mail: ht@cogsci.ed.ac.uk
		     URL: http://www.ltg.ed.ac.uk/~ht/
Received on Monday, 19 March 2001 06:36:13 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:14:20 GMT