2

Pythonlxmlライブラリを使用してxmlファイルを解析しています。xmlスキーマに対してxmlファイルを検証する必要があります。lxmlはXMLスキーマ検証をサポートしますが、xmlスキーマfilepath / contentを提供する必要があります(情報はここで入手できます:http://lxml.de/validation.html)。ただし、事前にxmlスキーマファイルパスがわからないため、xmlファイルヘッダータグから解析する必要があります。これらのタグにアクセスする方法が見つかりません。

lxmlはどういうわけかこのユースケースをサポートしていますか?

4

1 に答える 1

2

スキーマがルート要素の属性を使用してリンクされている場合、http://www.w3.org/2001/XMLSchema-instance名前空間では、属性名の前に名前空間のURLを中括弧で囲むことにより、lxmlでこれらを取得できます。

XMLSchemaNamespace = '{http://www.w3.org/2001/XMLSchema-instance}'
document = lxml.parse(xmlfile)
schemaLink = document.get(XMLSchemaNamespace + 'schemaLocation')
if schemaLink is None:
    schemaLink = document.get(XMLSchemaNamespace + 'noNamespaceSchemaLocation')

次に、URLライブラリを使用して、参照された場所からスキーマをロードします。詳細については、 lxml名前空間の処理を参照してください。

于 2012-09-07T17:16:11.760 に答える