创建 xml 模式并在 C# 中验证

Create xml schema and verify in c#

我是使用 XML 和 XML 模式的新手。

我有以下 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<MainDoc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.unece.org/cefact/namespaces/DocHeader">
  <DocHeader>
    <TypeVersion>5.0</TypeVersion>
    <Dest>
      <Id Auther="zzz">2</Id>
    </Dest>
  </DocHeader>
 </MainDoc>

我已经提到了 https://www.w3schools.com/xml/schema_complex_text.asp

但它似乎不适用于我的情况(我有多个具有属性的元素),所以任何人都可以告诉我上述 XML 的确切模式是什么?

XML 架构:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MainDoc">
<xs:complexType>
    <xs:sequence>
    <xs:element name="DocHeader">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="TypeVersion" type="xs:double"/>               
            <xs:element name="Dest" type="xs:string">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Id">
                            <xs:complexType>
                             <xs:simpleContent>
                                  <xs:extension base="xs:integer">
                                   <xs:attribute name="Author" type="xs:string"/>
                                  </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

我试图在 C# 中阅读的代码:

XmlSchemaSet schema = new XmlSchemaSet();
schema.Add("", "PATH_OF_XSD_FILE");

在 C# 中出现错误:

The type attribute cannot be present with either simpleType or complexType.

按照 klaus Gutter 的说法,如果使用复杂类型,类型将会出现,因为我们可以为此使用 base。 检查以下代码:

<xs:element name="Dest">                
                    <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Id">                      
                            <xs:complexType>
                                <xs:simpleContent>
                                  <xs:extension base="xs:string">
                                    <xs:attribute name="Auther" type="xs:string" />
                                  </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>