Message177408
Hi,
There are two issues commented in this bug, both are part of libexpat.
The one related the code inconsistency is due the design of Xml_Parser.
Reading Modules/expat/xmlparse.c:5036
else if (!entity) {
/* Cannot report skipped entity here - see comments on
skippedEntityHandler.
if (skippedEntityHandler)
skippedEntityHandler(handlerArg, name, 0);
*/
/* Cannot call the default handler because this would be
out of sync with the call to the startElementHandler.
if ((pool == &tempPool) && defaultHandler)
reportDefault(parser, enc, ptr, next);
*/
break;
}
That's so because libexpat startElementHandler should be called before the skippedEntityHandler, but this piece of code is processed before the call to startElementHandler.
To fix this, it would require a change in the libexpat API, adding the concept of futures to the attributes processing, and a way to obtain them with an iterator.
In any case, I don't think this is a python issue, but a known libexpat limitation. It might be forwarded to libexpat developers, but from the python point of view, it should be closed.
The second issue, is not really an issue. It's the default behaviour if an entity reference is found but there is no dtd specified (the entities declaration is a xml extension). This part is working as intended. |
|
Date |
User |
Action |
Args |
2012-12-13 15:20:53 | maxy@debian.org | set | recipients:
+ maxy@debian.org, terry.reedy, exarkun |
2012-12-13 15:20:53 | maxy@debian.org | set | messageid: <1355412053.93.0.0667328383206.issue4955@psf.upfronthosting.co.za> |
2012-12-13 15:20:53 | maxy@debian.org | link | issue4955 messages |
2012-12-13 15:20:53 | maxy@debian.org | create | |
|