xerces-c-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Alberto Massari <amass...@progress.com>
Subject Re: exposing setXMLEntityResolver to the SAX parser
Date Wed, 07 Apr 2004 14:21:07 GMT
Hi Mark,
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: xerces-c-dev-unsubscribe@xml.apache.org
>For additional commands, e-mail: xerces-c-dev-help@xml.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-c-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-c-dev-help@xml.apache.org


Mime
View raw message