具有包含多个属性的complexType:
<xs:complexType name="baseType" mixed="true">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="leader" type="xs:boolean" use="optional"/>
</xs:complexType>
<xs:element name="person" type="baseType"/>
如何限制leader
属性仅在XML文件中使用一次?所以以下内容不会验证(不能是两位领导者)
<person name="Charlie"/>
<person name="Megan" leader="true"/>
<person name="Moe"/>
<person name="Jonathan" leader="true"/>
<person name="Claire"/>
答案 0 :(得分:2)
如果为leader
属性提供仅具有一个可能值的类型(例如,通过boolean
限制派生的类型并且仅允许为真),则可以强制执行“最多一次”,然后在包含person元素的 parent 元素的级别添加unique
约束,声明person元素必须具有其leader
属性的唯一值。由于唯一约束仅适用于实际存在字段的元素,因此这将确保不超过一个人具有leader
属性,并且当该属性存在时,它必须为真。
我认为有一种方法可以在XML Schema 1.0中强制执行“至少一个”,如果可以使用1.1,则可以使用断言来执行此操作。