lxml

lxml怎么进行XML Schema键约束和唯一约束验证

小亿
84
2024-05-14 11:33:16
栏目: 编程语言

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

0
看了该问题的人还看了