Python的lxml忽略“ minOccurs = 0”

时间:2018-09-07 08:44:20

标签: python-3.x lxml

我正在编写一个Python脚本,该脚本创建XML数据,然后使用XSD文件对其进行验证。在XML数据的一个特定位置,即使看起来正确,我也会收到验证错误。

首先,这是XSD文件的摘录

@4=d

我将其解释为“地址”标签可以包含零个或一个“城市”标签和“邮政编码”标签。作为我的xml数据的简化版本是这样的:

   def string_list_to_int_list(l):
       return l.astype(float)

   converted_list = list(map(string_list_to_int_list, list2))

根据XSD,我认为这是合法的xml数据。这是代码:

<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>London</city>
</address>

在我看来,XML验证程序似乎忽略了schema_doc = etree.parse(xsd_file) schema = etree.XMLSchema(schema_doc) schema.assertValid(xml_data) 语句,因此要求所有元素都存在。

有人知道是什么原因导致了这个看似意外的错误吗?

0 个答案:

没有答案