The following patch seems to fix the relative URI bug. If (one of) the Xerces maintainers deems it worthy, please check it in :-)
Index: XMLDTDScanner.java =================================================================== RCS file: /home/cvspublic/xml-xerces/java/src/org/apache/xerces/framework/XMLDTD Scanner.java,v retrieving revision 1.4 diff -r1.4 XMLDTDScanner.java 1200a1201,1219 > > // [EMAIL PROTECTED] > // > // An fSystemLiteral value from an entity declaration may be > // a relative URI. If so, it's important that we make it > // absolute with respect to the context of the document that > // we are currently reading. If we don't, the XMLParser will > // make it absolute with respect to the point of *reference*, > // before attempting to read it. That's definitely wrong. > // > String litSystemId = fStringPool.toString(fSystemLiteral); > String absSystemId = fEntityHandler.expandSystemId(litSystemId); > if (!absSystemId.equals(litSystemId)) { > // REVISIT - Is it kosher to touch fStringPool directly? > // Is there a better way? fEntityReader doesn't seem to > // have an addString method that takes a literal string. > fSystemLiteral = fStringPool.addString(absSystemId); > } > 2376a2396 > Be seeing you, norm -- Norman Walsh <[EMAIL PROTECTED]> | Nothing ever gets anywhere. The http://nwalsh.com/ | earth keeps turning round and gets | nowhere. The moment is the only | thing that counts.--Jean Cocteau