我有一个如下所示的 XML 文件:
<root>
<node1></node1>
<node2></node2>
<node3></node3>
<line>
<line1></line1>
<line2></line2>
<line3></line3>
</line>
<line>
<line1></line1>
<line2></line2>
<line3></line3>
</line>
</root>
这是我的限制:
<node1>
,<node2>
,<node3>
必须每个都恰好出现一次,并且可以以任何顺序出现<node1>
,<node2>
,<node3>
必须都出现在<line>
元素的开始之前- 有任意数量的
<line>
元素,但必须至少有一个 <line1>
,<line2>
, 中的<line3>
元素<line>
必须每个都只出现一次,并且可以以任何顺序出现- 我无法控制 XML。它是由一些第三方软件提供给我的。
- 我必须使用 XSD 1.0。
- 这是一个简化的例子。我正在查看 20 个左右的独特
<node#>
s,因此该解决方案必须能够很好地扩展。
我正在尝试设计一个 XSD 文件来验证此 XML,但无济于事。问题是我本质上是在查看一个<xs:all>
块(对于我<node#>
的 s),然后是一个<xs:sequence>
or<xs:choice>
块maxOccurs="unbounded"
(对于我<line>
的 s),但似乎没有有效的方法可以使用 XSD 1.0 执行此操作。