2015-04-03 61 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來強制執行此類約束。

相關問題