我不确定XSD是否具备此功能,但如果确实如此,我无法弄清楚如何做到这一点。当提交类型为“submit_one”时,报告只能包含值A,B或C.当提交类型为“submit_two”时,报告只能包含值X,Y或Z.如何在XML Schema Definition文件?
这些都是使用此Schema的有效XML文件。
<submission type="submit_one">
<reports>
<report>A</report>
<report>B</report>
</reports>
</submission>
<submission type="submit_two">
<reports>
<report>X</report>
<report>Y</report>
</reports>
</reports>
这不是有效的xml
<submission type="submit_one">
<reports>
<report>X</report>
<report>Z</report>
</reports>
</submission>
答案 0 :(得分:3)
如果你只做XSD 1.0,则无法做到。如果您愿意将XSD 1.0处理器与Schematron引擎结合使用,那么您可以这样做。
或者,如果您可以访问XSD 1.1处理器,则可以使用&lt; xsd:assert /&gt;解决它。或者您可以使用类型替代品。请查看here以获取更多信息。
答案 1 :(得分:0)
对于您想要进行的验证类型,您需要定义两个单独的“提交”类型,一个用于一个“限制集”,另一个用于另一个。
不幸的是,通过执行此操作,您将无法在架构中的相同位置跨两种不同类型共享相同的节点名称。