Usando XSDs con incluye

Aquí hay un 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>

Aquí hay un segundo XSD que incluye el anterior:

<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>

Necesito leer el (segundo) XSD en C # y:

compruebe que es un XSD válido, yvalidar documentos en su contra.

Aquí hay algunos C # para leer en los esquemas:

<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>

La .Compile () falla porque "Type 'a: TheSimpleType' no está declarado, o no es un tipo simple".

Sin embargo, funciona si:

el espacio de nombres se elimina del esquema, oel espacio de nombres se agrega a la inclusión.

La pregunta es: ¿cómo consigo que C # lo acepte sin editar los esquemas?

Sospecho que el problema es que, aunque he colocado ambos esquemas en el XmlSchemaSet, todavía necesito decirle a C # que uno está incluido en el otro, es decir, no lo ha resuelto por sí mismo. De hecho, si solo le digo al XmlSchemaSet acerca del XSD principal (y no el de inclusión) (ambos sin espacios de nombres (o con)), entonces "Tipo 'TheSimpleType' no está declarado, o no es un tipo simple".

Por lo tanto, esto parece ser una pregunta acerca de la resolución que incluye: ¿cómo?

Respuestas a la pregunta(4)

Su respuesta a la pregunta