【发布时间】:2019-12-01 07:53:23
【问题描述】:
我是使用 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# 中出现错误:
type 属性不能与 simpleType 或 complexType 一起出现。
【问题讨论】:
-
确切的架构?你能详细说明一下吗?
-
我已经为上面的 xml 创建了 xsd 文件。但我收到错误消息。“type 属性不能与 simpleType 或 complexType 一起出现。”
-
所以你正试图在 c# 中创建这个 xsd 文件?
-
其实我想用xsd文件验证xml文件。检查我为示例 xml 附加的 xsd 文件代码
-
您将元素
Sender和Receiver指定为xs:string类型和 complexType。显然,这些不可能都是真的。