创建 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>
我是使用 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>