Согласно документации lxml "DTD извлекается автоматически на основе DOCTYPE проанализированного документа. Все, что вам нужно сделать, это использовать анализатор, в котором включена проверка DTD".
http://lxml.de/validation.html#validation-at-parse-time
Однако, если вы хотите выполнить проверку по XML-схеме, вам необходимо явно сослаться на нее.
Мне интересно, почему это так, и я хотел бы знать, есть ли библиотека или функция, которая может это сделать. Или даже объяснение, как это сделать самому. Проблема в том, что существует много способов сослаться на XSD, и мне нужно поддерживать их все.
Проверка не является проблемой. Проблема заключается в том, как определить схемы для проверки. В идеале это также будет обрабатывать встроенные схемы.
Обновление:
Вот пример.
simpletest.xsd:
simpletest.xml:
foo
Я хотел бы сделать что-то вроде следующего:
>>> parser = etree.XMLParser(xsd_validation=True)
>>> tree = etree.parse("simpletest.xml", parser)