Mark Lundquist | 28 Aug 19:18
Picon

Help... how can I setFeature() on JaxpParser


Hi,

I very much need to set the feature
"http://apache.org/xml/features/nonvalidating/load-external-dtd 
"  (see http://xerces.apache.org/xerces-j/features.html#load-external-dtd) 
  on the Xerces parser wrapped by a JaxpParser instance (returned by  
manager lookup of SAXParser.role).

I don't see a way to do it... it looks like JaxpParser doesn't expose  
an interface for it.  JaxpParser buries the factory instances and the  
parser instances pretty thoroughly and doesn't provide any handles to  
set features, even in the component configuration.

This is for a project that's stuck on Cocoon 2.1.8, BTW.  I guess I  
can always just create my own parser instance if it comes down to  
that.  Before I bother, does anybody know of a way to avoid the  
bother?  Maybe I'm missing something...

cheers,
—ml—

Mark Lundquist | 28 Aug 23:54
Picon

Re: Help... how can I setFeature() on JaxpParser


Never mind.

I went ahead as described, creating an XMLReader and setting the  
EntityResolver by hand, then setting the feature.  It turns out I was  
given some bad advice that setting the "load-external-dtd" feature to  
false would solve my problem (Xerces trying to connect to w3c.org in  
spite of catalog-based EntityResolver), but it doesn't fix it anyway,  
so... back to the drawing board.

—ml—

On Aug 28, 2008, at 10:22 AM, Mark Lundquist wrote:

>
> Hi,
>
> I very much need to set the feature
"http://apache.org/xml/features/nonvalidating/load-external-dtd 
> "  (see http://xerces.apache.org/xerces-j/features.html#load-external-dtd) 
>  on the Xerces parser wrapped by a JaxpParser instance (returned by  
> manager lookup of SAXParser.role).
>
> I don't see a way to do it... it looks like JaxpParser doesn't  
> expose an interface for it.  JaxpParser buries the factory instances  
> and the parser instances pretty thoroughly and doesn't provide any  
> handles to set features, even in the component configuration.
>
> This is for a project that's stuck on Cocoon 2.1.8, BTW.  I guess I  
> can always just create my own parser instance if it comes down to  
(Continue reading)

Thorsten Scherler | 29 Aug 00:18
Picon
Favicon

Re: Help... how can I setFeature() on JaxpParser

On Thu, 2008-08-28 at 14:54 -0700, Mark Lundquist wrote:
> Never mind.
> 
> I went ahead as described, creating an XMLReader and setting the  
> EntityResolver by hand, then setting the feature.  It turns out I was  
> given some bad advice that setting the "load-external-dtd" feature to  
> false would solve my problem (Xerces trying to connect to w3c.org in  
> spite of catalog-based EntityResolver), but it doesn't fix it anyway,  
> so... back to the drawing board.

not sure whether you are aware of 
http://svn.apache.org/viewvc/forrest/branches/update_cocoon_2.1.12-dev/main/webapp/WEB-INF/cocoon.xconf?diff_format=h&view=markup
<entity-resolver logger="core.resolver">
    <parameter name="catalog" value="resources/schema/catalog.xcat"/>
    <parameter name="verbosity" value="${org.apache.xml.resolver.verbosity}"/>
  </entity-resolver>

maybe that helps.

salu2

> —ml—
> 
> 
> On Aug 28, 2008, at 10:22 AM, Mark Lundquist wrote:
> 
> >
> > Hi,
> >
> > I very much need to set the feature
(Continue reading)

Mark Lundquist | 29 Aug 19:35
Picon

Re: Help... how can I setFeature() on JaxpParser


On Aug 28, 2008, at 3:18 PM, Thorsten Scherler wrote:

> not sure whether you are aware of
> http://svn.apache.org/viewvc/forrest/branches/update_cocoon_2.1.12-dev/main/webapp/WEB-INF/cocoon.xconf?diff_format=h&view=markup
> <entity-resolver logger="core.resolver">
>    <parameter name="catalog" value="resources/schema/catalog.xcat"/>
>    <parameter name="verbosity" value="$ 
> {org.apache.xml.resolver.verbosity}"/>
>  </entity-resolver>
>
> maybe that helps.

Thx for the reply, Thorsten!  Yes, I'm aware of Cocoon's catalog  
entity resolver.  I've got this transformer written a long time ago by  
somebody else, that uses Xerces but was not supplying any entity  
resolver, so I changed it to use Cocoon's catalog-based resolver, and  
it worked a lot better but was still making some network connections  
in spite of this (and for some reason, I'm getting a lot of  
"connection refused" from w3.org, all starting a couple of weeks ago,  
which is weird and is what started me down this whole path of looking  
at this transformer).

Finally I figured out that if I stick the whole DTD into a catalog,  
Xerces no longer makes these network connections.  Maybe that is what  
you were getting at above.  Anyway, I figured it out through kind of a  
roundabout way.  My original question was about setting the "load- 
external-dtd" feature, because a guy on the Xerces list told me that  
would magically fix this problem.  I went ahead and did that, but it  
was bum advice... it does not fix the problem, and indeed looking at  
(Continue reading)


Gmane