我需要确保XML文档的所有元素(名称不感兴趣)都包含一组特定的属性。
但xs:any
不允许这样做:
<xs:any processContents="lax">
<xs:complexType>
<xs:attribute name="count1" type="nonNegativeInteger" use="required"/>
<xs:attribute name="count2" type="nonNegativeInteger" use="required"/>
</xs:complexType>
</xs:any>
我该怎么做?
答案 0 :(得分:1)
XSD无法制作关于属性使用的全局声明。
对于初学者,xs:any
必须出现在另一个命名元素的内容模型中。然后,一旦声明使用xs:any
可能发生任何元素,您就无法通过xs:attribute
声明进一步约束其属性。
在XSD 1.1中,您可以使用xs:assert
来声明有关特定元素的属性的要求,但不能全面说明所有元素的要求。
如果您的XSD确实有常规定义的命名元素,您可以使用xs:attributeGroup
声明常用属性并在每个元素声明中显式引用它们。
否则,请考虑使用XSLT,Schematron或其他语言而不是XSD来强制执行此类约束。