У меня есть пример для чтения набора XML-схем для XML-файла, который содержит различные пространства имен. Для этого я могу получить разные схемы для каждого пространства имен, как я объяснил ниже.
Образец файла:
<?xml version="1.0" encoding="utf-8"?>
<data xmlns:d="http://sampleschema/dataservices" xmlns:m="http://sampleschema/dataservices/metadata">
<content>
<m:properties>
<d:CustomerID>ALFKI</d:CustomerID>
<d:CompanyName>Alfreds Futterkiste</d:CompanyName>
</m:properties>
</content>
</data>
Пример кода для получения набора схем XML:
strFileName = @"C:\Sample\Sample.xml";
XmlReader reader = XmlReader.Create(strFileName);
XmlSchemaInference schema = new XmlSchemaInference();
XmlSchemaSet schemaSet = schema.InferSchema(reader);
Это дает три различных типа схем при использовании приведенного выше кода. Но мое требование заключается в том, что мне нужна единая схема для всего XML-файла, который содержит любое количество пространств имен. Я проверил возможности кодов в msdn и переполнение стека. Я не могу найти правильного решения для этого.
Ожидаемый вывод схемы будет таким, как показано ниже.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element name="content">
<xs:complexType>
<xs:sequence>
<xs:element name="m:properties">
<xs:complexType>
<xs:sequence>
<xs:element name="d:CustomerID" type="xs:string"></xs:element>
<xs:element name="d:CompanyName" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="xmlns:d" type="xs:string"></xs:attribute>
<xs:attribute name="xmlns:m" type="xs:string"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
Любой может помочь в достижении этого требования.
Заранее спасибо.