我正在尝试为以下 XML 创建 XSD 架构:

<root>
  <!-- The actual file must contain one of the following constraints -->
  <constraint type="interval">
    <min>100</min>
    <max>200</max>
  </constraint>

  <constraint type="equals">
    <value>EOF</value>
  </constraint>
</root>

约束元素的子元素取决于 type 属性的值。

我已经使用定义 type 属性的抽象类型和定义子元素的两个扩展类型成功验证了 XML。这需要我用 xsi:type 属性装饰 XML,命名实际的扩展类型:
  <constraint type="interval" xsi:type="intervalConstraintType">
    <min>100</min>
    <max>200</max>
  </constraint>

遗憾的是,我无法控制 XML 结构,因此很难引入新的属性。

这对 XSD 可行吗?有没有更合适的替代品?

最佳答案

我认为应该是可能的,但我目前不知道如何自己做。作为一种解决方法,您可以即时重写 xml 以包含您的扩展。

编辑:嗯,看起来不可能,至少在 XSD 1.0 中不可能

关于xml - XSD - 取决于属性值的子元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/439657/

10-14 18:45