[Mono-list] XSD indirect importing problem with XsdSchemaSet

魏玮 shazhouke at gmail.com
Wed Oct 14 09:37:56 EDT 2009


Hi, guys,

Sorry for spamming, if you receive this mail twice. It's my first time to
use this mail list, I didn't receive my first post, I suspect it was lost.

I ran into this problem when working with the XsdSchemaSet:

Take an example:

There are 3 schemas, say a.xsd, b.xsd, c.xsd
a.xsd imports b.xsd, b.xsd imports c.xsd
a.xsd and c.xsd have the SAME target namespace

a.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://nsA" xmlns:xs="
http://www.w3.org/2001/XMLSchema">
  <xs:import targetNamespace=http://nsB <http://nsb/>" target="b.xsd"/>
  <xs:element name="a">
  </xs:element>
</xs:schema>

b.xsd:
 <?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://nsB" xmlns:xs="
http://www.w3.org/2001/XMLSchema">
  <xs:import targetNamespace=http://nsA <http://nsa/>" target="c.xsd"/>
  <xs:element name="b">
  </xs:element>
</xs:schema>

c.xsd
 <?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace="http://nsA" xmlns:xs="
http://www.w3.org/2001/XMLSchema">
  <xs:element name="c">
  </xs:element>
</xs:schema>

An error saying "Target namespace must be different from that of included
schema", when I was running the following program

using System;
using System.Xml;
using System.Xml.Schema;

namespace testSchema
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlSchemaSet xss = new XmlSchemaSet();
            xss.Add(null, "a.xsd")
            xss.Compile();
        }
    }
}

I have tried:
1. Run the program with Mono 2.4.2.3 , got the error "Target namespace must
be different from that of included schema",
2. Run the program with Visiual Studio 2008, no error.
3. Include c.xsd in a.xsd, before importing,
     <?xml version="1.0" encoding="utf-8"?>
    <xs:schema targetNamespace="http://nsA" xmlns:xs="
http://www.w3.org/2001/XMLSchema">
      <xs:include schemaLocation="c.xsd"/>
      <xs:import targetNamespace=http://nsB <http://nsb/>"
schemaLocation="b.xsd"/>
      <xs:element name="a">
      </xs:element>
    </xs:schema>
    run with Mono 2.4.2.3, no error.

I want to know:

Is there any method to resolve this error except adding includes (If no, I
have to modify a lot schema files)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20091014/62d4d5b8/attachment.html 


More information about the Mono-list mailing list