所有元素都必须有一组属性
All elements must have a set of attributes
我需要确保 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>
我该怎么做?
XSD 不能对属性使用做出这样的全局声明。
首先,xs:any
必须出现在另一个命名元素的内容模型中。然后,一旦使用 xs:any
声明任何元素都可能出现,就无法通过 xs:attribute
声明进一步限制其属性。
在 XSD 1.1 中,您可以使用 xs:assert
来说明有关特定元素属性的要求,但不是对所有元素一概而论。
如果您的 XSD 确实有按惯例定义的命名元素,您可以使用 xs:attributeGroup
声明常用属性并在每个元素声明中显式引用它们。
否则,请考虑使用 XSLT、Schematron 或其他语言而不是 XSD 来强制执行此类约束。
我需要确保 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>
我该怎么做?
XSD 不能对属性使用做出这样的全局声明。
首先,xs:any
必须出现在另一个命名元素的内容模型中。然后,一旦使用 xs:any
声明任何元素都可能出现,就无法通过 xs:attribute
声明进一步限制其属性。
在 XSD 1.1 中,您可以使用 xs:assert
来说明有关特定元素属性的要求,但不是对所有元素一概而论。
如果您的 XSD 确实有按惯例定义的命名元素,您可以使用 xs:attributeGroup
声明常用属性并在每个元素声明中显式引用它们。
否则,请考虑使用 XSLT、Schematron 或其他语言而不是 XSD 来强制执行此类约束。