Lxml использует поддержку каталога из libxml2 . Используйте переменную окружения XML_CATALOG_FILES
, чтобы предоставить список каталогов (вы также можете установить его из python, используя os.environ ), или, если эта переменная отсутствует, она проверяет существование /etc/xml/catalog
(конечно, не могу использовать это в Windows).
Альтернативой может быть использование пользовательского распознавателя URI. Вы можете найти больше информации в lxml документах
РЕДАКТИРОВАТЬ: по-видимому, вопрос был не о фактической обработке xinclude, которая работает, а о способе «запросить» каталог или запросить его для фактических имен файлов, которые будут использоваться для включений.
Lxml (по крайней мере, в настоящее время) не имеет API для этого. Однако базовая библиотека libxml2 поддерживает это, и «оригинальные» привязки libxml2 python позволяют вам сделать это (хотя простой документации не хватает, однако строки документации в исходном коде libxml2 помогают, однако). Таким образом, хотя этот модуль не так удобен в использовании, как lxml, он кажется лучшим выбором. Пример, который, кажется, работает:
>>> import libxml2
>>> libxml2.loadCatalog('catalog.xml')
>>> print libxml2.catalogResolveURI('file:///common/logo.xml')
file:///home/kst/svn/TOOLS/Docbook/common/logo.xml