我正在尝试为以下 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/