lxml: GML-Schema Problem

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

lxml: GML-Schema Problem

Christian Baier-2
Hi Liste,

ich wollte eine XML-Datei validieren und fand ein Codeschnipsel, das erstaunlich (ich bin noch Python-Neuling und immer mehr begeistert) einfach ist:

"""
import sys
from lxml import etree

xsdDatei = "gb-erh.xsd"

schema_root = etree.parse( xsdDatei )
schema = etree.XMLSchema(schema_root)    # hier bricht er ab
parser = etree.XMLParser(schema=schema)    

xmlDatei = "E.Erh.Az6512.xml"
etree.parse( xmlDatei, parser=parser)
"""

Aber leider kommt er gar nicht dazu die Datei zu validieren, weil er beim parsen des Schemas schon abbricht:

Traceback (most recent call last):
  File ".\eigene_Scripte\Python\xmlvalidator.py", line 9, in <module>
    schema = etree.XMLSchema(schema_root)
  File "xmlschema.pxi", line 103, in lxml.etree.XMLSchema.__init__ (src/lxml/lxml.etree.c:116069)
XMLSchemaParseError: local list type: A type, derived by list or union, must have the simple ur-type definition as base type, not '{http://www.opengis.net/gml/3.2}doubleList'., line 118


Das ist offensichtlich nicht nur mein Problem, wie man mit
google finden kann, z.B.:
http://www.devcomments.com/error-restricting-complexType-list-parsing-official-GML-schema-at108628.htm

Wohl ein Problem mit libxml2 und gml.

Leider habe ich nur "veraltete" Software zur Verfügung:
lxml-2.2.4.win32-py2.5.exe

Allerdings wüßte ich gern, wie ich herausbekomme, ob das nicht noch immer ein Problem ist, ohne Python neu zu installieren (was ich mir auf den PCs, wo ich es brauche, erstmal genehmigen lassen müsste).

Gibt's hier einen (XML-)Guru, der das ggf. Problem kennt, oder einordnen kann, ob das als Bug registriert ist, oder wann ein "Bug Fix" zu erwarten ist/das Problem beseitigt hat?



Zum nachvollziehen, unter:
http://www.bezreg-koeln.nrw.de/extra/33alkis/alkis_nrw.htm#anlage07
kann man sich das ZIP-Archiv runterladen:
http://www.bezreg-koeln.nrw.de/extra/33alkis/dokumente/Anlage_7_2010-05-28_4-1-5.zip
in dem dann die xsd-Datei:
Anlage_7_2010-05-28_4-1-5.zip/Anlage7/XSD/gb-erh.xsd
steht.

Viele Grüße

Christian









--
Schon gehört? GMX hat einen genialen Phishing-Filter in die
Toolbar eingebaut! http://www.gmx.net/de/go/toolbar

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: lxml: GML-Schema Problem

Christopher Arndt
Christian Baier schrieb:
> Wohl ein Problem mit libxml2 und gml.
>
> Leider habe ich nur "veraltete" Software zur Verfügung:
> lxml-2.2.4.win32-py2.5.exe

Probier's doch mal mit 'ner aktuelleren Version:

http://www.lfd.uci.edu/~gohlke/pythonlibs/

Google Suchbegriffe: "lxml 2.4 windows binary" :)

Chris


_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: lxml: GML-Schema Problem

Christopher Arndt
Christopher Arndt schrieb:
> Christian Baier schrieb:
>> Wohl ein Problem mit libxml2 und gml.
>>
>> Leider habe ich nur "veraltete" Software zur Verfügung:
>> lxml-2.2.4.win32-py2.5.exe
>
> Probier's doch mal mit 'ner aktuelleren Version:
>
> http://www.lfd.uci.edu/~gohlke/pythonlibs/

Ach soooo, ich sehe gerade, du hast nur Python 2.5. Keinen anderen
Rechner oder vielleicht sogar ein Linux zuhand? Wie wär's mit 'nem Linux
in der Virtual Machine (z.B. mit dem VMWare Player oder VirtualBox) oder
einer Linux-Live Distribution von CD?

Chris

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: lxml: GML-Schema Problem

Christian Baier-2
In reply to this post by Christopher Arndt
Hi Chris, hi Liste,

> Probier's doch mal mit 'ner aktuelleren Version:
> http://www.lfd.uci.edu/~gohlke/pythonlibs/

ich hab's "zu Hause" mal mit
lxml-2.3.win32-py2.7.exe
versucht, gleicher Fehler :´-(

> Google Suchbegriffe: "lxml 2.4 windows binary" :)

Ich habe jetzt nicht lange gesucht (<1Min) aber keinen
brauchbaren Treffer gehabt. Ich bin mir nicht sicher, ob das
zielführend ist immer die neueste Version zu suchen und
auszuprobieren.


Ich stell die Frage mal anders:

Gibt's eine andere Lösung, GML-Dateien mit Python zu validieren?

Die Alternative ist, ein externes Programm zu starten.

Apache Xerces2 (Java nötig) kann mit GML umgehen, aber das würde
ich gern vermeiden.




Viele Grüße

Christian











--
NEU: FreePhone - kostenlos mobil telefonieren und surfen!
Jetzt informieren: http://www.gmx.net/de/go/freephone

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: lxml: GML-Schema Problem

Stefan Behnel-4
In reply to this post by Christian Baier-2
Christian Baier, 09.02.2011 22:15:

> ich wollte eine XML-Datei validieren und fand ein Codeschnipsel, das erstaunlich (ich bin noch Python-Neuling und immer mehr begeistert) einfach ist:
>
> """
> import sys
> from lxml import etree
>
> xsdDatei = "gb-erh.xsd"
>
> schema_root = etree.parse( xsdDatei )
> schema = etree.XMLSchema(schema_root)    # hier bricht er ab
> parser = etree.XMLParser(schema=schema)
>
> xmlDatei = "E.Erh.Az6512.xml"
> etree.parse( xmlDatei, parser=parser)
> """
>
> Aber leider kommt er gar nicht dazu die Datei zu validieren, weil er beim parsen des Schemas schon abbricht:
>
> Traceback (most recent call last):
>    File ".\eigene_Scripte\Python\xmlvalidator.py", line 9, in<module>
>      schema = etree.XMLSchema(schema_root)
>    File "xmlschema.pxi", line 103, in lxml.etree.XMLSchema.__init__ (src/lxml/lxml.etree.c:116069)
> XMLSchemaParseError: local list type: A type, derived by list or union, must have the simple ur-type definition as base type, not '{http://www.opengis.net/gml/3.2}doubleList'., line 118
>
>
> Das ist offensichtlich nicht nur mein Problem, wie man mit
> google finden kann, z.B.:
> http://www.devcomments.com/error-restricting-complexType-list-parsing-official-GML-schema-at108628.htm
>
> Wohl ein Problem mit libxml2 und gml.

Eine ähnliche Frage gab es schonmal auf der lxml Liste, bezüglich des CML
Schemas:

http://comments.gmane.org/gmane.comp.python.lxml.devel/5799?set_lines=100000


> Leider habe ich nur "veraltete" Software zur Verfügung:
> lxml-2.2.4.win32-py2.5.exe

Ok, das ist wirklich schon ziemlich alt. Aber auch mit der neuesten Version
von libxml2 bekomme ich die Exception oben.

Meine persönliche Meinung zu W3C XML-Schema ist, dass es ein totaler Murks
ist. Sowohl die unglaublich komplizierte Spezifikation selbst als auch die
Verwendung und die fehlerhafte Nutzerdokumentation dazu. Es kann niemandem
zugemutet werden, ein W3C Schema von Hand zu schreiben, und weil sich die
meisten Leute eben darum drücken, sind fast alle Schemata so lange
generiert worden, bis irgendein Validator der gerade zur Hand war
(gängigerweise ein Java-Tool) keine fatalen Fehler mehr ausgespuckt hat
beim Parsen. Ob die anderen Validatoren dann auch der selben Meinung sind,
wird geflissentlichst ignoriert. Dass die das anders sehen, ist nämlich
dank der Unverständlichkeit der Spezifikation gar nicht so
unwahrscheinlich. Es kann nämlich auch niemandem zugemutet werden, so etwas
zu implementieren. So.

Und das traurigste ist, dass ich mit dieser Meinung nicht alleine stehe,
wie z.B. dieser Thread hier zeigt:

http://lists.w3.org/Archives/Public/www-xml-schema-comments/2002JanMar/1103.html

Das hilft dir aber mit deinem Problem nicht weiter. Meine Standardantwort
an dieser Stelle: Die Schema-Entwickler anschreiben und darauf hinweisen,
dass libxml2 das Schema nicht verarbeiten kann. Dann freundlich fragen, ob
es sich nicht überarbeiten lässt. Meistens wird das aber wenig zielführend
sein, weil XML-Schema einfach zu kompliziert zum "eben mal überarbeiten"
ist. Aber vielleicht führt es ja dazu, dass hin und wieder auch mal jemand
einen zweiten oder dritten Validator zum Testen benutzt um ein Schema zu
entwickeln.

Ansonsten auch nochmal auf der libxml2 Mailingliste fragen.

Oder nachschauen, ob es nicht ein RelaxNG Schema für GML gibt. Das ist
nämlich lesbar spezifiziert.

Stefan

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de
Reply | Threaded
Open this post in threaded view
|

Re: lxml: GML-Schema Problem

Stefan Behnel-4
Stefan Behnel, 10.02.2011 06:57:

> Christian Baier, 09.02.2011 22:15:
>> ich wollte eine XML-Datei validieren und fand ein Codeschnipsel, das
>> erstaunlich (ich bin noch Python-Neuling und immer mehr begeistert)
>> einfach ist:
>>
>> """
>> import sys
>> from lxml import etree
>>
>> xsdDatei = "gb-erh.xsd"
>>
>> schema_root = etree.parse( xsdDatei )
>> schema = etree.XMLSchema(schema_root) # hier bricht er ab
>> parser = etree.XMLParser(schema=schema)
>>
>> xmlDatei = "E.Erh.Az6512.xml"
>> etree.parse( xmlDatei, parser=parser)
>> """
>>
>> Aber leider kommt er gar nicht dazu die Datei zu validieren, weil er beim
>> parsen des Schemas schon abbricht:
>>
>> Traceback (most recent call last):
>> File ".\eigene_Scripte\Python\xmlvalidator.py", line 9, in<module>
>> schema = etree.XMLSchema(schema_root)
>> File "xmlschema.pxi", line 103, in lxml.etree.XMLSchema.__init__
>> (src/lxml/lxml.etree.c:116069)
>> XMLSchemaParseError: local list type: A type, derived by list or union,
>> must have the simple ur-type definition as base type, not
>> '{http://www.opengis.net/gml/3.2}doubleList'., line 118
>>
>>
>> Das ist offensichtlich nicht nur mein Problem, wie man mit
>> google finden kann, z.B.:
>> http://www.devcomments.com/error-restricting-complexType-list-parsing-official-GML-schema-at108628.htm
>>
>>
>> Wohl ein Problem mit libxml2 und gml.
>
> Eine ähnliche Frage gab es schonmal auf der lxml Liste, bezüglich des CML
> Schemas:
>
> http://comments.gmane.org/gmane.comp.python.lxml.devel/5799?set_lines=100000
>
> Meine persönliche Meinung zu W3C XML-Schema ist, dass es ein totaler Murks
> ist. Sowohl die unglaublich komplizierte Spezifikation selbst als auch die
> Verwendung und die fehlerhafte Nutzerdokumentation dazu. Es kann niemandem
> zugemutet werden, ein W3C Schema von Hand zu schreiben, und weil sich die
> meisten Leute eben darum drücken, sind fast alle Schemata so lange
> generiert worden, bis irgendein Validator der gerade zur Hand war
> (gängigerweise ein Java-Tool) keine fatalen Fehler mehr ausgespuckt hat
> beim Parsen. Ob die anderen Validatoren dann auch der selben Meinung sind,
> wird geflissentlichst ignoriert. Dass die das anders sehen, ist nämlich
> dank der Unverständlichkeit der Spezifikation gar nicht so
> unwahrscheinlich. Es kann nämlich auch niemandem zugemutet werden, so etwas
> zu implementieren. So.
>
> Und das traurigste ist, dass ich mit dieser Meinung nicht alleine stehe,
> wie z.B. dieser Thread hier zeigt:
>
> http://lists.w3.org/Archives/Public/www-xml-schema-comments/2002JanMar/1103.html
>
> Das hilft dir aber mit deinem Problem nicht weiter. Meine Standardantwort
> an dieser Stelle: Die Schema-Entwickler anschreiben und darauf hinweisen,
> dass libxml2 das Schema nicht verarbeiten kann. Dann freundlich fragen, ob
> es sich nicht überarbeiten lässt. Meistens wird das aber wenig zielführend
> sein, weil XML-Schema einfach zu kompliziert zum "eben mal überarbeiten"
> ist. Aber vielleicht führt es ja dazu, dass hin und wieder auch mal jemand
> einen zweiten oder dritten Validator zum Testen benutzt um ein Schema zu
> entwickeln.
>
> Ansonsten auch nochmal auf der libxml2 Mailingliste fragen.
>
> Oder nachschauen, ob es nicht ein RelaxNG Schema für GML gibt. Das ist
> nämlich lesbar spezifiziert.

Ah, und es gibt vielleicht noch eine Möglichkeit: XML-Schema nach RelaxNG
*konvertieren*. Kann leider "trang" nicht (was sonst eigentlich für alles
gut ist), aber es gibt Tools, wenn mensch nur lange genug danach sucht:

http://www.postneo.com/2007/01/16/all-i-want-to-do-is-convert-my-schema

Das hier ist *möglicherweise* noch einen Blick wert, auch wenn dein GML
Schema vielleicht schon zu komplizert dafür ist.

http://debeissat.nicolas.free.fr/XSDtoRNG.php

Stefan

_______________________________________________
python-de maillist  -  [hidden email]
http://python.net/mailman/listinfo/python-de