XSD元素相关的限制
问题描述:
我不知道XSD有这个能力,但如果它确实我无法弄清楚如何做到这一点。当提交类型是“submit_one”,报告只能具有值A,B或C时提交类型是“submit_two”,报告只能具有值X,Y,或Z如何可以代表这在XML模式定义文件?XSD元素相关的限制
这些都希望能利用这个模式有效的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>
答
如果你做只XSD 1.0的话,那是不可能的。如果您愿意将XSD 1.0处理器与Schematron引擎相结合,那么您可以做到这一点。或者,如果您有权访问XSD 1.1处理器,则可以使用< xsd:assert />来解决此问题,也可以使用类型替代方法。请参阅here了解更多信息。
答
的那种验证你想要做你需要定义两个单独的“提交”类型,一个是一个“限制集”和一个为另一个。不幸的是
通过这样做,你将无法在架构相同的位置在两个不同类型的共享相同的节点名称。
雅,那是我的问题。我需要该节点名称是相同的。我的XSD正试图验证*创建的模式,这会产生这样的头痛。 – Spidy 2012-01-18 19:59:15