XSD:验证组中是否只有一个元素存在

XSD: Validate that only a single element in a group is present

给定以下 xml 结构:

<root>
  <definitions>
    <definition key="def1" group="group1" isExclusiveInGroup="true" />
    <definition key="def2" group="group1" isExclusiveInGroup="false" />
    <definition key="def3" group="group1" isExclusiveInGroup="false" />
    <definition key="def4" group="group2" isExclusiveInGroup="true" />
  </definitions>
  <items>
    <item key="item1" definitionKey="def1" />
    <item key="item2" definitionKey="def4" />
  </items>
</root>

我要验证的内容,英文:

  1. items 元素包含 item 元素可以接受的 引用 def2 和另一个引用 def3 的项目元素。他们 在 group1 中不排他。

  2. items 元素可以包含一个引用 def1 的 item 元素和另一个引用 def4 的 item 元素。他们属于不同的群体,因此他们的排他性并不冲突。

  3. 不能接受 items 元素包含一个引用 def1 的 item 元素和另一个引用组属性等于的任何其他定义的 item 元素组1。 Def1 是它的组独有的,因此在同一组中不能有任何其他项目引用定义

我会用什么 xsd structures/elements 来执行这样的规范?

这超出了 XSD 1.0 的功能。您将需要使用不同的验证技术,例如 XSD 1.1 或 Schematron。