在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的约束。最后输出验证结果。