プレフィックスを使用しているが、対応する名前空間宣言がない XML ファイルが多数あります。
次のようなもの:
<tal:block tal:condition="foo">
...
</tal:block>
また:
<div i18n:domain="my-app">
...
これらのプレフィックスがどこから来たのかはわかっています。次のことを試しましたが、成功しませんでした。
from lxml import etree as ElementTree
ElementTree.register_namespace("i18n", "http://namespaces.zope.org")
ElementTree.register_namespace("tal", "http://xml.zope.org/namespaces/tal")
with open(path) as fp:
tree = ElementTree.parse(fp)
しかし、lxml はまだ次のように詰まる:
lxml.etree.XMLSyntaxError: Namespace prefix i18n for domain on div is not defined, line 4, column 20
を使用できることはわかっていますElementTree.XMLParser(recover=True)
が、とにかくプレフィックスを保持したいのですが、この方法では保持できません。
何か案が?