RE: Recursive XSD with targetNamespace

Whenever you refer to a component in a namespace, you need to use a
qualified name. So it should be
 
type="foo:Item"
 
having declared
 
xmlns:foo=" <http://foo/> http://foo"
 
Michael Kay
http://www.saxonica.com/


  _____  

From: xmlschema-dev-request@w3.org [mailto:xmlschema-dev-request@w3.org] On
Behalf Of Todd Moon
Sent: 14 November 2008 20:24
To: xmlschema-dev@w3.org
Subject: Recursive XSD with targetNamespace


Hello everyone.

I have a recursively defined type called "Item" and the schema works fine at
first. However, if I specify a targetNamespace in the XSD, Visual Studio
gives me an error claiming that "Item" is not defined (when it's used within
the definition of Item itself.)

Here's a greatly simplified schema that still exposes the problem:

<?xml version="1.0" encoding="utf-8" ?>
<xsd:schema 
   targetNamespace="http://foo" 
   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   
   <xsd:complexType name="Item">
       <xsd:sequence>
           <xsd:element name="SerialNumber" />
           <xsd:sequence>
               <xsd:element name="Item" type="Item" />
           </xsd:sequence>
       </xsd:sequence>
   </xsd:complexType>
   
</xsd:schema>

If I remove the targetNamespace attribute this works fine. Why is this
causing a problem?

Thanks!

- Todd Moon

Received on Friday, 14 November 2008 21:01:45 UTC