Używanie XSD z dołączeniami

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

Oto drugi XSD, który zawiera powyższy:

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

Muszę odczytać (drugi) XSD do C # i:

sprawdź, czy jest prawidłowym XSD iwaliduj dokumenty przeciwko niemu.

Oto kilka C # do odczytania na schematach:

<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 () nie powiedzie się, ponieważ „Typ„ a: TheSimpleType ”nie jest zadeklarowany lub nie jest typem prostym.”

Jednak działa, jeśli:

przestrzeń nazw jest usuwana ze schematu lubprzestrzeń nazw zostanie dodana do włączenia.

Pytanie brzmi: jak uzyskać C #, aby go zaakceptować bez edycji schematów?

Podejrzewam, że problem polega na tym, że chociaż umieściłem oba schematy w XmlSchemaSet, wciąż muszę powiedzieć C #, że jeden jest dołączony do drugiego, to znaczy, że sam go nie przepracował. Rzeczywiście, jeśli powiem XmlSchemaSet tylko o głównym XSD (a nie o włączeniu) (zarówno bez (lub z) przestrzeniami nazw), to „Typ„ TheSimpleType ”nie jest zadeklarowany lub nie jest typem prostym.”

Zatem wydaje się, że jest to pytanie o rozwiązanie, które obejmuje: jak ?!

questionAnswers(4)

yourAnswerToTheQuestion