commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Craig R. McClanahan" <craig...@apache.org>
Subject RE: [digester] using non URL'ed DTD's
Date Wed, 14 Nov 2001 16:45:12 GMT


On Tue, 13 Nov 2001, Tal Dayan wrote:

> Date: Tue, 13 Nov 2001 23:01:10 -0800
> From: Tal Dayan <tal@zapta.com>
> Reply-To: Jakarta Commons Developers List <commons-dev@jakarta.apache.org>
> To: Jakarta Commons Developers List <commons-dev@jakarta.apache.org>,
>      Louis Tribble <louis.tribble@webgain.com>
> Subject: RE: [digester] using non URL'ed  DTD's
>
> Thanks. This works. The DTD file is now recognized and I can see printout of
> exceptions if the
> XML document does not match the DTD.
>

Cool.

> Now, how do I abort the parsing and throw an exception if the validation
> (using the DTD) fails ? Currently the parsing just continues as usual so
> when the parsing ends, the application does not know if the XML document was
> valid or not.
>

Normally, Digester just logs the error messages and goes on.  If you want
it to abort the parse instead, you need to implement a SAX ErrorHandler
that actually throws exeptions from its methods, and then call
digester.setErrorHandler() before the parse to install it.

> And next step, how can I check if the public ID of the DTD in the XML
> document was the expected one (for which we set a local resolver using the
> register() method) ?
>

In other words, you want to ensure that *only* one of your registered
public IDs is selected?  In the plans is a setEntityResolver() that will
work like setErrorHandler() does, and lets you install your own.  In the
mean time, you could subclass Digester and override the resolveEntity()
method.  If the first argument is registered, go ahead and call the
superclass resolveEntity() method; if it's not, throw an exception.

> Thanks,
>
> Tal
>

Craig


> > -----Original Message-----
> > From: Louis Tribble [mailto:louis.tribble@webgain.com]
> > Sent: Tuesday, November 13, 2001 8:19 PM
> > To: Jakarta Commons Developers List
> > Subject: Re: [digester] using non URL'ed DTD's
> >
> >
> > > We are still not able to use a DTD for validation because our
> > DTD file has a
> > > path that
> > > is not acceptable by Digester and/or the underlying XML parser
> > (the URL is
> > > 'file://d:/a/b/c.dtd' but the Windows drive letter 'd:' confuses
> > > everything).
> >
> > >From RFC 1738:
> > > A file URL takes the form:
> > >
> > >    file://<host>/<path>
> > >
> > > <snip>
> > > As a special case, <host> can be the string "localhost" or the
> > empty string; this
> > > is interpreted as `the machine from which the URL is being interpreted'.
> >
> > With two slashes, "d:" is a host name. With three slashes, the
> > URL should be interpreted
> > correctly. By the grace of many URL parsers, one slash sometimes
> > works too.
> >
> > Louis Tribble
> >
> >
> > --
> > To unsubscribe, e-mail:
> > <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> > For additional commands, e-mail:
> > <mailto:commons-dev-help@jakarta.apache.org>
> >
>
>
> --
> To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>
>
>


--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message