1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
from xml.parsers.xmlproc import xmlproc
import sys
class DTDReporter(xmlproc.DTDConsumer):
"A simple class that just prints out the events it receives."
def __init__(self,parser,out=sys.stdout):
xmlproc.DTDConsumer.__init__(self,parser)
self.out=out
def new_general_entity(self,name,val):
self.out.write("ENTITY: %s [%s]\n" % (name,val))
def new_external_entity(self,ent_name,pub_id,sys_id,ndata):
self.out.write("EXTERNAL ENTITY: %s P: [%s] S: [%s] N: %s\n" %\
(ent_name,pub_id,sys_id,ndata))
def new_parameter_entity(self,name,val):
self.out.write("PE: %s [%s]\n" % (name,val))
def new_external_pe(self,name,pubid,sysid):
self.out.write("EXTERNAL PE: %s P: [%s] S: [%s]\n" % (name,pubid,sysid))
def new_notation(self,name,pubid,sysid):
self.out.write("NOTATION: %s P: [%s] S: [%s]\n" % (name,pubid,sysid))
def new_attribute(self,elem,attr,a_type,a_decl,a_def):
self.out.write("ATTLIST: %s %s %s %s [%s]\n" % (elem,attr,a_type,a_decl,a_def))
def new_element_type(self,elem_name,elem_cont):
self.out.write("ELEMENT: %s %s\n" % (elem_name,`elem_cont`))
# --- Client methods
def close(self):
self.out.close()
# --- Main program
if __name__ == '__main__':
t=xmlproc.DTDParser()
t.set_dtd_consumer(DTDReporter(t))
t.parse_resource(sys.argv[1])
#t.parse_resource("c:\\minedo~1\\data\\sgml\\xml\\xbel-1.0.dtd")
#t.parse_resource("c:\\minedo~1\\programmering\\python\\xml\\stddirs\\petest.dtd")
|