Xml XSD:基于上一个属性的值定义属性

Xml XSD:基于上一个属性的值定义属性,xml,xsd,schema,Xml,Xsd,Schema,我猜这个功能是不存在的,但我想我应该给它最后一次机会 我正在尝试验证一个XML结构(我无法控制这个结构) 在这个结构中,我可以有多个“条件”标记,每个标记都有一个属性“类型”,然后该标记中的其余属性取决于该类型。例如,如果它看起来是这样的: <Condition type="LessThan" maxAmount="3"> <Effect type="Add" value="2" /> </Condition> <Condition type="G

我猜这个功能是不存在的,但我想我应该给它最后一次机会

我正在尝试验证一个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>

如果它是LessThan类型,那么它只需要一个maxAmount标记,等等

没有办法根据前一个属性的值来设置属性必需/可选/禁止,嘿


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

您是对的,此功能不存在


可以在中完成,但我不知道它是否适合您的项目。

您描述的功能的名称是“共生约束”,XSD 1.0不支持这些约束


您可以在XSD1.1中使用“条件类型赋值”语法来实现这一点,其中元素的类型取决于其属性的值;您也可以使用断言来完成。XSD1.1现在是W3C的最终建议,并在Xerces和Saxon中实现。

谢谢!在1.1成为主流后,我们将在此期间做一些事情,并重新审视它。