import os import sys from xml.parsers.xmlproc import xmlval from xml.parsers.xmlproc.utils import validate_doc, load_dtd, ErrorPrinter dtd = load_dtd("xmlval_illformed.dtd") f = open("doc.xml", "w") f.write(""" """) f.close() try: # validate_doc(dtd, "doc.xml") # validate_doc is not suitable since it prints to stderr parser = xmlval.XMLValidator() parser.dtd = dtd # FIXME: what to do if there is a !DOCTYPE? parser.set_error_handler(ErrorPrinter(parser, out=sys.stdout)) parser.parse_resource("doc.xml") finally: os.unlink("doc.xml") DOC_TEXT ="""\ %big-ent; ]> """ LINE = "\n" f1 = open("doc.xml", "w") f2 = open("larger-than-16K.ent", "w") try: f1.write(DOC_TEXT) f1.close() for i in range(int(17*1024 / len(LINE))): f2.write(LINE) f2.close() parser = xmlval.XMLValidator() #parser.dtd = dtd # FIXME: what to do if there is a !DOCTYPE? parser.set_error_handler(ErrorPrinter(parser, out=sys.stdout)) parser.parse_resource("doc.xml") finally: os.unlink("doc.xml") os.unlink("larger-than-16K.ent")