在lxml中,可以使用xmlschema
模塊來進行XML Schema鍵約束和唯一約束的驗證。以下是一個示例代碼:
from lxml import etree
from lxml.etree import XMLSchema
# 定義XML Schema
schema = XMLSchema(etree.XML('''
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="books">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="author" type="xs:string"/>
</xs:sequence>
<xs:unique name="uniqueTitle">
<xs:selector xpath="title"/>
<xs:field xpath="."/>
</xs:unique>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
'''))
# 定義XML文檔
xml = etree.XML('''
<books>
<book>
<title>Book1</title>
<author>Author1</author>
</book>
<book>
<title>Book1</title>
<author>Author2</author>
</book>
</books>
''')
# 驗證XML文檔
if schema.validate(xml):
print("XML Schema validation successful")
else:
print("XML Schema validation failed")
在以上示例代碼中,首先定義了一個包含鍵約束和唯一約束的XML Schema,然后定義了一個符合該Schema的XML文檔。接著創建一個XMLSchema
對象來加載XML Schema,并使用validate
方法驗證XML文檔是否符合Schema的約束。最后輸出驗證結果。