我从一个xml文档创建了一个模式,该文档包含几个类型的多个元素,但是以随机顺序需要一次序列化然后反序列化(我在VB中编程.NET但C#的答案是好的,所以我没有指定的语言)。多个随机排序元素的正确模式
<xml version="1.0" encoding="utf-8">
<sample:ABC>
<sample:DEF></sample:DEF>
<sample:XYZ></sample:XYZ>
<sample:DEF></sample:DEF>
<sample:PNQ></sample:PNQ>
<sample:DEF></sample:DEF>
<sample:DEF></sample:DEF>
</sample:ABC>
到目前为止,我有这个模式这是由生产XSD.EXE:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ABC">
<xs:complexType>
<xs:sequence>
<xs:element name="DEF" minOccurs="0" />
<xs:element name="XYZ" minOccurs="0" />
<xs:element name="PNQ" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
然而,这并不符合所有可能的方式将XML可以进来,很明显,我已经简化了XML和模式,并且只显示一个样本,以便更容易地展示问题。
我见过一个建议,使用all
元素,但只允许每个孩子之一。我也尝试添加重复的子元素(例如两个DEF元素),但是会创建一个“模糊”模式。 我也尝试过使用一系列选择元素,但从架构生成的代码必须使用对象,因此不是类型安全的。我认为有可能使用继承来解决这个问题,但是我的模式技能并不适合它。
问题是:是否有任何模式元素可以用来获得与xml的正确匹配?如果没有,我可以至少创建一个可用于检查xml有效性的模式吗?
谢谢,我错过了,现在修复 – 2013-03-08 08:21:40