Lxml Python игнорирует "minOccurs = 0" - PullRequest
       8

Lxml Python игнорирует "minOccurs = 0"

0 голосов
/ 07 сентября 2018

Я пишу скрипт Python, который создает данные XML, а затем проверяет их с помощью файла XSD. В одном конкретном месте в данных XML я получаю ошибку проверки, даже если все выглядит правильно.

Во-первых, вот выдержка из файла XSD

<xs:complexType name="address">
  <xs:all>
    <xs:element name="city" type="string255Length" minOccurs="0">
    <xs:element name="postal_code" type="string255Length" minOccurs="0">

Я интерпретирую это как тег «address» может иметь ноль или один тег «city» и «postal_code». Как упрощенная версия моих данных XML это:

<address>
  <city>London</city>
</address>

Я думал, что это законные данные XML в соответствии с XSD. Это код:

schema_doc = etree.parse(xsd_file)
schema = etree.XMLSchema(schema_doc)
schema.assertValid(xml_data)

Когда я запускаю этот код, я получаю

Missing child element(s). Expected is one of ( postal_code )

Мне кажется, что валидатор XML игнорирует оператор minOccurs="0", что требует наличия всех элементов.

Кто-нибудь знает, что вызывает эту, казалось бы, неожиданную ошибку?

...