/ Norman Walsh <[EMAIL PROTECTED]> was heard to say:
| If you have a DTD x.dtd that includes a PE x.mod and a DTD y.dtd
| that redeclares x.mod, x-prime.mod, and then includes x.dtd by
| PE ref, Xerces mistakenly attempts to load the redeclared
| x-prime.mod from the directory where x.dtd occurs instead of the
| directory where y.dtd occurs. This is an error.
[...]
| I haven't (yet) tried this against the latest CVS of Xerces but
| I will asap. (Though perhaps not before returning from X-Tech).
Alas, it does happen in the xerces that I got from CVS this
morning. I really want to fix this, so I went digging. The
right answer, I think, is to make the URI absolute much earlier
in the process. It absolutely has to be done before the
URI of the file that contained the declaration is lost.
One possible place to do this is in
XMLDTDScanner.scanEntityDecl. At an even deeper level, it could
be done in XMLDTDScanner.scanSystemLiteral. (I don't know what
the benefits would be of doing the expansion before the string
goes in the StringPool. I guess that would be ideal, but I get
the feeling that may be too deep.)
Unfortunately, I'm a little lost in the architectural maze of
Xerces, so I'm going to ask what I hope is an easy question for
someone to answer:
Is it possible to access the URI of the document currently being
parsed from XMLDTDScanner.scanEntityDecl()?
If not, does anyone see another way to solve this?
Be seeing you,
norm
--
Norman Walsh <[EMAIL PROTECTED]> | The stone fell on the pitcher? Woe
http://nwalsh.com/ | to the pitcher. The pitcher fell
| on the stone? Woe to the
| pitcher.--Rabbinic Sayning