I'm trying to import a local XML schema into another but I'm getting an error when parsing the "parent" using lxml:
# main.py
from lxml import etree
if __name__ == '__main__':
    s = etree.fromstring('''
        <xsd:schema
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        elementFormDefault="qualified">
             <xsd:import
                  namespace="http://www.w3schools.com"
                  schemaLocation="file:///Users/Oskar/test.xsd"/>
        </xsd:schema>
    ''')
    etree.XMLSchema(s)
# test.xsd
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="foo" type="xsd:integer"/>
</xsd:schema>
$ python main.py
Traceback (most recent call last):
  File "main.py", line 14, in <module>
    etree.XMLSchema(s)
  File "src/lxml/xmlschema.pxi", line 87, in lxml.etree.XMLSchema.__init__ (src/lxml/lxml.etree.c:191759)
lxml.etree.XMLSchemaParseError: Internal error: xmlSchemaBucketCreate, failed to add the schema bucket to the hash.
What am I missing?
test.xsd needs to export a targetNamespace which matches the value of namespace in xsd:import:
<xsd:schema
      targetNamespace="http://www.w3schools.com"
      xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="foo" type="xsd:integer"/>
</xsd:schema>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With