Я пишу скрипт 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"
, что требует наличия всех элементов.
Кто-нибудь знает, что вызывает эту, казалось бы, неожиданную ошибку?