lxml と xsd (ogckml22.xsd) を使用して XML を検証しようとしています。これはオフラインで行われています。ストレートオープン/読み取りでファイルを読み取ります
ちなみに、http://www.opengis.net/kml/2.2 は有効ではありません。
別の記事から:(コメントリクエストにより明確化..)
from lxml import etree
import os
import sys
import StringIO
file=open('ogckml22.xsd')
data=file.read()
str=StringIO.StringIO(data)
try:
xmlschema_doc=etree.parse(data)
except IOError as ex:
print "oops {0}".format(ex.strerror)
except:
print "Unexpected error:", sys.exc_info()[0]
xmlschema=etree.XMLSchema(xmlschema_doc)
私が得るのは「接続が拒否されました」だけです。try/except を使用すると、xmlschema_doc が定義されていません。
File "<stdin>", line 1, in <module>
File "<xmlschema.pxi",line 105, in lxml.etree.XMLSchema.__init__ (src/lxml/lxml.etree.c:132748
self.error_log)
lxml.etree.XMLSchemaParseError: connection refused
上記のxsdファイルと、含まれる別のxsdファイルを読み取ることができることはわかっています。
たぶん xsd が読み込まれますか? lxml のソースと src/lxml/xmlschema.pxi をダウンロードしました。
if self._c_schema is NULL:
raise XMLSchemaParseError(
self.error_log._buildExceptionMessage(
u"Document is not valid XML Schema"),
self._error_log)
「ドキュメントは有効な XML スキーマではありません」というメッセージが表示されません。「ドキュメントメッセージ」(デフォルト?)の代わりに「接続拒否」が使用されているとしか思えませんが、_error_log(再コンパイル以外)をより完全に読むと回避できます....
心から、
ArrowInTree