2015-04-03 36 views
1

我需要确保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> 

我该怎么办呢?

回答

1

XSD无法进行有关属性使用的全局声明。

对于初学者,xs:any必须出现在另一个命名元素的内容模型中。然后,一旦声明使用xs:any可能出现任何元素,则不能通过xs:attribute声明进一步限制其属性。

在XSD 1.1中,您可以使用xs:assert来表示关于特定元素上的属性的要求,但不是所有元素都在板上。

如果您的XSD具有传统定义的命名元素,则可以使用xs:attributeGroup来声明常用属性并在每个元素声明中明确引用它们。

否则,请考虑使用XSLT,Schematron或其他某种语言来代替XSD来强制执行此类约束。

相关问题