XSD:根据以前的属性值定义属性(XSD: Define attributes based on t

2019-06-26 03:50发布

我要去猜测,这个功能不存在,但我想我给它做最后一个搏。

我已经得到了我想要验证(我在这个结构中没有控制)的XML结构。

在这种结构中,我可以有多个“条件”标签,每个标签都有一个属性“类型”,然后在该标签中的其余属性依赖于该类型是什么。 所以,如果例如,它看起来像这样:

<Condition type="LessThan" maxAmount="3">
   <Effect type="Add" value="2" />
</Condition>
<Condition type="GreaterThan" minAmount="1">
   <Effect type="Transform" action="Skew" value="4"  />
   <Effect type="Transform" action="Stretch" value="3" />
</Condition>
<Condition type="Range" minAmount="1" maxAmount="3">
   <Effect type="YouGetTheDrift" />
</Condition>

然后,如果它的类型每种不超过,只需要一个maxAmount标签等。

有没有办法让属性必需/可选/禁止的基础上以前的属性值,哎?

我试图创建具有多个条件标签的选择,有型和自定义的固定值,每种类型的属性集,但它抱怨具有相同名称的标签。

Answer 1:

对于你所描述的功能名称是“共生的约束”,而他们没有在XSD 1.0的支持。

您可以使用“条件类型分配”语法,其中一个元素的类型取决于它的属性值在1.1 XSD做到这一点; 你也可以使用断言做到这一点。 XSD 1.1现在是一个最终的W3C推荐标准和Xerces和撒克逊实现。



Answer 2:

你说得对,这个功能并不存在。

它可以做的Schematron ,但我不知道它是否适合你的项目。



文章来源: XSD: Define attributes based on the value of previous attribute
标签: xml xsd schema