在lxml中,可以使用xmlschema模块来进行XML Schema键约束和唯一约束的验证。以下是一个示例代码:
from lxml import etreefrom lxml.etree import XMLSchema# 定义XML Schemaschema = 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的约束。最后输出验证结果。


