I guess the reason these methods have not been added to SAX2XMLReader is that this interface is derived from the SAX2 specs, where they are missing.
If you can provide a patch using the EntityResolver2 extension, that would be a better fix for this problem.
Alberto
At 13.19 07/04/2004 +0100, Mark Weaver wrote:
Would this be permissible? This is very useful, as the current EntityResolver interface does not provide a base URI, leading to the problem of it being impossible to correctly resolve a root document including a DTD which includes another resource via a relative reference (and that's really common -- most DTDs include other DTDs). A trivial example of such is parsing and validating something specifiying:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
where xhtml1-strict.dtd has as it's first line:
<!ENTITY % HTMLlat1 PUBLIC "-//W3C//ENTITIES Latin 1 for XHTML//EN" "xhtml-lat1.ent"> %HTMLlat1
I tried to do this before by implementing EntityResolver2 (against 2.3.0) but I came unstuck on the `name' parameter, where basically in a large number of places I wasn't sure what to put for that. However, the new method would work just fine for me, provided that I could get at it!
The patch below implements the change. The code is already present, so it just exposes it...
Thanks,
Mark
diff -ur xerces-c-src_2_5_0\src\xercesc/sax2/SAX2XMLReader.hpp xml-xerces\src\xercesc/sax2/SAX2XMLReader.hpp --- xerces-c-src_2_5_0\src\xercesc/sax2/SAX2XMLReader.hpp 2004-02-16 20:52:16.000000000 +0000 +++ xml-xerces\src\xercesc/sax2/SAX2XMLReader.hpp 2004-04-07 01:41:56.583227000 +0100 @@ -173,6 +173,7 @@
class ContentHandler ; class DTDHandler; +class XMLEntityResolver; class EntityResolver; class ErrorHandler; class InputSource; @@ -249,6 +250,13 @@ virtual EntityResolver* getEntityResolver() const = 0 ;
/** + * This method returns the installed entity resolver. + * + * @return A pointer to the installed entity resolver object. + */ + virtual XMLEntityResolver* getXMLEntityResolver() const = 0 ; + + /** * This method returns the installed error handler. * * @return A pointer to the installed error handler object. @@ -338,6 +346,24 @@ */ virtual void setEntityResolver(EntityResolver* const resolver) = 0;
+ /** Set the entity resolver + * + * This method allows applications to install their own entity + * resolver. By installing an entity resolver, the applications + * can trap and potentially redirect references to external + * entities. + * + * <i>Any previously set entity resolver is merely dropped, since the parser + * does not own them. If both setEntityResolver and setXMLEntityResolver + * are called, then the last one is used.</i> + * + * @param resolver A const pointer to the user supplied entity + * resolver. + * + * @see #getXMLEntityResolver + */ + virtual void setXMLEntityResolver(XMLEntityResolver* const resolver) = 0; + /** * Allow an application to register an error event handler. *
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
