XSD文件中minOccurs
的{{1}}属性的默认值为1 (source)。
考虑您有一个XSD指定包含2个元素的复杂类型:<element>
和<el1>
如果您提供的<el2>
仅包含XDocument
,则<el2>
将无法验证
相反,你会收到消息:
The element Message in namespace ___ has invalid child element el2 in namespace ___. List of possible elements expected: el1
这基本上是XDocument
上的一个错误,其中人们会认为复杂类型上的错误不包含<el2>
。
我的问题是:
有没有办法检查所有<el1>
- 标签是否有<element>
&gt; 0是否存在?
我想说在使用XSD验证XML时这是一个非常基本的检查。
答案 0 :(得分:2)
根据您定义架构的方式,元素的外观顺序很重要。
在这种情况下,验证器期望&lt; el1&gt;但正在看到元素&lt; el2&gt;所以错误是&lt; el2&gt;出现在不应该的地方。我相信这意味着在定义复杂类型时使用了“序列”。所以你得到的错误是正确的。
如果这仍然困扰你,并且元素的顺序与解析无关,请使用“all”而不是“sequence”,这将不会强制执行顺序。然后验证者应该提示您所需的元素&lt; el1&gt;不见了。它看起来应该如下所示:
<xsd:complexType name="MyType">
<xsd:all>
<xsd:element name="el1" minOccurs="1"/>
<xsd:element name="el2" minOccurs="1"/>
</xsd:all>
</xsd:complexType>
我希望这会有所帮助。