hohe Prämie für die folgende Frage:Wie validiere ich eine XML-Datei gegen ein XSD-Schema mit der Amara-Bibliothek in Python?
Hallo, Hier ist, was ich auf Ubuntu 9.10 mit Python versucht, 2.6, Amara2 (übrigens, Test.xsd wurde mit xml2xsd Tool erstellt):
[email protected]:~$ cat test.xml; echo =====o=====; cat test.xsd; echo ====
o=====; cat test.py; echo =====o=====; ./test.py; echo =====o=====
<?xml version="1.0" encoding="utf-8"?>==; ./test.py` >
test.txttest.xsd; echo ===
<test>abcde</test>
=====o=====
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="test" type="xs:NCName"/>
</xs:schema>
=====o=====
#!/usr/bin/python2.6
# I wish to validate an xml file against an external XSD schema.
from amara import bindery, parse
source = 'test.xml'
schema = 'test.xsd'
#help(bindery.parse)
#doc = bindery.parse(source, uri=schema, validate=True) # These 2 seem
to fail in the same way.
doc = parse(source, uri=schema, validate=True) # So, what is the
difference anyway?
#
=====o=====
Traceback (most recent call last):
File "./test.py", line 14, in <module>
doc = parse(source, uri=schema, validate=True)
File "/usr/local/lib/python2.6/dist-packages/Amara-2.0a4-py2.6-linux-
x86_64.egg/amara/tree.py", line 50, in parse
return _parse(inputsource(obj, uri), flags,
entity_factory=entity_factory)
amara.ReaderError: In file:///home/g/test.xml, line 2, column 0:
Missing document type declaration
[email protected]:~$
=====o=====
Also, warum sehe ich diesen Fehler? Wird diese Funktionalität nicht unterstützt? Wie kann ich eine XML-Datei für eine XSD validieren, während die Flexibilität auf eine XSD-Datei verweist? Danke, und lassen Sie mich wissen, wenn Sie Fragen haben.
Möchten Sie Amara Library verwenden? –
@movieyoda, nein, ich kann zu einer anderen guten Python XML-Bibliothek springen. Allerdings müsste ich dann meinen bestehenden 'Amara'-Code dorthin portieren, und ich hoffe, dass ich dafür eine schmerzlose Lösung finde. –