XSD元素依赖性限制

时间:2012-01-18 07:43:07

标签: xsd

我不确定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>

2 个答案:

答案 0 :(得分:3)

如果你只做XSD 1.0,则无法做到。如果您愿意将XSD 1.0处理器与Schematron引擎结合使用,那么您可以这样做。

或者,如果您可以访问XSD 1.1处理器,则可以使用&lt; xsd:assert /&gt;解决它。或者您可以使用类型替代品。请查看here以获取更多信息。

答案 1 :(得分:0)

对于您想要进行的验证类型,您需要定义两个单独的“提交”类型,一个用于一个“限制集”,另一个用于另一个。

不幸的是,通过执行此操作,您将无法在架构中的相同位置跨两种不同类型共享相同的节点名称。