2017-03-21 3 views
1

Ich versuche, importiert ein lokales XML-Schema in ein anderes zu importieren, aber ich erhalte eine Fehlermeldung, wenn die „Eltern“ Parsen mit lxml:Fehler beim Parsen von XML-Schema, die andere lokales Schema

# 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. 

Was bin ich?

Antwort

1

test.xsd braucht eine targetNamespace zu exportieren, die den Wert von namespace in xsd:import matches:

<xsd:schema 
     targetNamespace="http://www.w3schools.com" 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:element name="foo" type="xsd:integer"/> 
</xsd:schema> 
Verwandte Themen