对于我正在使用的XSD,验证的标记是有效的HTML。我试图应用的规则应该能够应用于任何HTML元素。换句话说,我的规则是元素不可知的。我主要关心限制属性。元素不可知约束?
<xs:element name="div">
<xs:complexType>
<xs:sequence>
<xs:any>
<xs:attribute name="containerColor">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="green"/>
<xs:enumeration value="red"/>
<xs:enumeration value="blue"/>
<xs:enumeration value="yellow"/>
<xs:enumeration value="grey"/>
<xs:enumeration value="black"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:unique name="id" >
<xs:selector xpath="*"></xs:selector>
<xs:field xpath="*"></xs:field>
</xs:unique>
</xs:any>
</xs:sequence>
</xs:complexType>
</xs:element>
我是新来的XSD。我相信我有一些根本性的误解。
在上面的例子我想说任何可以(但不要求有)一个“containerColor”属性。如果使用该属性,则必须是枚举颜色之一。
此外,任何元素都可以有一个ID,它应该是唯一的。
在上面的尝试,我得到投诉的任何元素不是属性/唯一一个有效的上下文。
从选择器的角度来看,我关心的是将规则应用于所有元素的集合而不是特定的元素。有没有一种方法可以用XSD实现这一点?