I have the following Python code:
import xml.dom.minidom import xml.parsers.expat try: domTree = ml.dom.minidom.parse(myXMLFileName) except xml.parsers.expat.ExpatError, e: return e.args[0]
which I am using to parse an XML file. Although it quite happily spots simple XML errors like mismatched tags, it completely ignores the DTD specified at the top of the XML file:
<?xml version='1.0' encoding='UTF-8' standalone='no' ?> <!DOCTYPE ServerConfig SYSTEM 'ServerConfig.dtd'>
so it doesn’t notice when mandatory elements are missing, for example. How can I switch on DTD checking?
See this question – the accepted answer is to use lxml validation.