[ expat-Bugs-583114 ] 1.95.4 not backward compatible w 1.95.2

noreply@sourceforge.net noreply@sourceforge.net
Wed Jul 17 17:06:23 2002


Bugs item #583114, was opened at 2002-07-17 18:35
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=110127&aid=583114&group_id=10127

Category: None
Group: None
Status: Open
Resolution: Rejected
Priority: 5
Submitted By: Michel Rodriguez (mirod)
Assigned to: Nobody/Anonymous (nobody)
Summary: 1.95.4 not backward compatible w 1.95.2

Initial Comment:
When upgrading from 1.95.2 to 1.95.4 I found that the
behaviour of the library has changed: I can no longer
use a fake (non-existent) DTD to avoid entity
declaration errors.

I found the change using XML::Parser but I would think
it is caused by expat (it happened right after I
upgraded it):

perl -MXML::Parser -e'XML::Parser->new->parse( q{<?xml
version="1.0" standalone="no"?><!DOCTYPE doc SYSTEM
"dummy.dtd">
<doc>
  <elt1>toto &ent1;</elt1>
</doc>});'

gives no error using 1.95.2 but a "undefined entity at
line 3, column 13, byte 90" with 1.95.4

I know that trick is devious and certainly slightly
evil, but I found it quite useful ;--)

The new result might be the proper behaviour but it is
not documented (as far as I could tell) and it
certainly breaks compatibility


----------------------------------------------------------------------

>Comment By: Karl Waclawek (kwaclaw)
Date: 2002-07-17 20:05

Message:
Logged In: YES 
user_id=290026

Michel,

At closer inspection, this document is not well-formed,
because Expat detects that it actually has no DTD,
assuming that you didn't set an external entity ref handler.

Once there is no DTD, then standalone="no" doesn't matter
anymore, the spec requires &ent1; to be declared.

However, if you set an external entity handler and pass an
empty file to it, then it might work as it did for you before.
The crucial point would be that you need to create an
external entity parser and call it's XML_Parse function,
if I remember correctly.

In any case, on my system here, Expat reports an
undefined entity error.

Karl

----------------------------------------------------------------------

Comment By: Karl Waclawek (kwaclaw)
Date: 2002-07-17 19:46

Message:
Logged In: YES 
user_id=290026

Michel,

This change of behaviour is due to a bug fix.
Documentation for fixes can be found in the
associated bug and patch reports.

As a matter of fact, this specific fix is even mentioned
in the release notes for 1.95.4: 
Re-implemented WFC: Entity Declared from XML 1.0 spec ...

I am are aware that fixing bugs may introduce 
incompatibilities, but given the alternative of not fixing them ...

Anyway, if this is crucial to you, I recommend you do
not upgrade.

Karl

----------------------------------------------------------------------

Comment By: Michel Rodriguez (mirod)
Date: 2002-07-17 19:38

Message:
Logged In: YES 
user_id=72556

I think the bug is actually not due to the library but to
XML::Parser, or at least to XML::Parser's integration with
the library. xmlfw correctly reports that the document is OK
if standalone is set to "no", even with 1.95.4

I will have a look at XML::Parser::Expat but my C is really
rusty :--( 

Thanks

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=110127&aid=583114&group_id=10127