[XML-SIG] Bug in 0.6.6
Juergen Hermann
Juergen Hermann" <jhe@webde-ag.de
Mon, 27 Aug 2001 15:51:26 +0200
Hi!
I think I reported the following for 0.6.5, and it's still in 0.6.6.
Can someone test this against the CVS source?
Given the following three files, I get a traceback that "HTTP_SSL" is
not defined, which is because it comes AFTER including the external
entity. Put it before the "env" entity, and alas, no traceback!
xml.sax._exceptions.SAXParseException:
file:///export/home/jhe/tmp/EntityTest/enttest.xml:19:44: Undeclared
entity 'HTTP_SSL'
Should work in both cases!
==> enttest.ent <==
<?xml version="1.0" encoding="ISO-8859-1"?>
<!ENTITY HTTP_PORT "80">
==> enttest.py <==
import os
import xml.sax
import xml.sax.saxutils
import xml.sax.handler
import xml.sax.sax2exts
class TestLoader(xml.sax.saxutils.DefaultHandler):
def __init__(self, filename):
self.fileurl = 'file://' + os.path.abspath(filename)
# create parser
parser = xml.sax.sax2exts.XMLValParserFactory.make_parser()
print '+++ parser is', parser
parser.setFeature(xml.sax.handler.feature_namespaces, 1)
parser.setFeature(xml.sax.handler.feature_validation, 1)
parser.setFeature(xml.sax.handler.feature_external_ges, 1)
parser.setFeature(xml.sax.handler.feature_external_pes, 1)
# set handlers
parser.setContentHandler(self)
parser.setDTDHandler(self)
parser.setErrorHandler(self)
parser.setEntityResolver(self)
# parse the XML into events
parser.parse(self.fileurl)
def startElementNS(self, name, qname, attrs):
print name, qname, attrs.items()
if __name__ == "__main__":
print xml.version_info
test = TestLoader('enttest.xml')
==> enttest.xml <==
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<!DOCTYPE root [
<!ELEMENT root (param*)>
<!ELEMENT param EMPTY>
<!ATTLIST param
name NMTOKEN #REQUIRED
value CDATA #REQUIRED
>
<!ENTITY % env SYSTEM "enttest.ent">
%env;
<!ENTITY HTTP_SSL "443">
]>
<root>
<param name="http-port" value="&HTTP_PORT;"/>
<param name="http-ssl" value="&HTTP_SSL;"/>
</root>