Использование XSD с включениями

Вот XSD:

<code><?xml version="1.0"?>
<xsd:schema 
elementFormDefault='unqualified' 
attributeFormDefault='unqualified' 
xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
>

  <xsd:simpleType name='TheSimpleType'>
    <xsd:restriction base='xsd:string' />
  </xsd:simpleType>
</xsd:schema>
</code>

Вот второй XSD, который включает в себя приведенный выше:

<code><?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema 
elementFormDefault='unqualified' 
attributeFormDefault='unqualified' 
xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
targetNamespace='a'
xmlns='a'
>

  <xsd:include schemaLocation='Include.xsd' />

  <xsd:element name = "TheElement" >
  <xsd:complexType>
  <xsd:attribute name="Code" type="TheSimpleType" use="required"/>
  </xsd:complexType>
  </xsd:element>
</xsd:schema>
</code>

Мне нужно прочитать (второй) XSD в C # и:

check that it is a valid XSD, and validate documents against it.

Вот некоторые C # для чтения в схемах:

<code>    XmlSchemaSet schemaSet = new XmlSchemaSet();
    foreach (string sd in Schemas)
    {
        using (XmlReader r = XmlReader.Create(new FileStream(sd, FileMode.Open)))
        {
            schemaSet.Add(XmlSchema.Read(r, null));
        }
    }
    schemaSet.CompilationSettings = new XmlSchemaCompilationSettings();
    schemaSet.Compile();
</code>

.Compile () завершается ошибкой, потому что "Type" a: TheSimpleType & apos; не объявлен или не является простым типом. & quot;

Тем не менее, это работает, если либо:

the namespace is removed from the schema, or the namespace is added to the include.

Вопрос в том, как заставить C # принять его без редактирования схем?

Я подозреваю, что проблема в том, что, хотя я поместил обе схемы в XmlSchemaSet, мне все еще нужно сказать C #, что одна включена в другую, то есть она не сработала сама для себя. Действительно, если я расскажу XmlSchemaSet только об основном XSD (а не о включаемом) (оба без (или с) пространствами имен), тогда «Тип» TheSimpleType ». не объявлен или не является простым типом. & quot;

Таким образом, кажется, что вопрос о разрешении включает в себя: как ?!

Ответы на вопрос(4)

Ваш ответ на вопрос