Appreciate the change/fix. Will this go into a 1.1.1 release or would I
need to wait for 1.2 ? I can't exactly use a 'nightly build' for
production code.
Thanks.
> Bond - James D. wrote:
>
> >>>Been using XMLConfiguration now for a bit .... it works great. BUT when
I
> >>>try to use it with an xml file that references a relative dtd (like
> >>>'my.dtd') It yells:
> >>>
> >>>org.apache.commons.configuration.ConfigurationException: Relative URI
> >>>"my.dtd"; can not be resolved without a base URI.
> >>>
> >>>So I have 2 questions:
> >>>
> >>>1) I have been able to just use the relative DTD for every other XML
> >>>parser I've used ... why does only this one require a full path to the
> >>>DTD? (which is not possible for me since I can deploy this app anywhere).
> >>>
> >>>2) If it 'just plain requires the full path', then fine, let me turn of
> >>>DTD validation. How the heck do I do that with the Commons Configuration
> >>>package? I've used the Digester classes before and with them I just have
> >>>to do something like: digester.setValidating( false ); How do I turn off
> >>>DTD validation???
> >>>
> >>>Thanks.
> >>>
> >>>
> >>>
> >>XMLConfiguration loads XML files through an InputSource, which is merely
> >>a wrapper around a stream and does not allow the XML parser to obtain
> >>the path of the XML document. So relative paths cannot be resolved.
> >>
> >>DTD validation is disabled per default. However even non validating XML
> >>parsers will always try to load a specified DTD because it might contain
> >>other important information like entity definitions. So if the DTD canot
> >>be found, an exception will be thrown by the parser.
> >>
> >>To work around this problem: In the nightly builds XMLConfiguration
> >>contains a new method setDocumentBuilder(). This method allows to set a
> >>pre-configured XML parser, which will then be used to load documents.
> >>You can create your own DocumentBuilder and register a custom
> >>EntityResolver implementation, which locates your DTD file (or returns
> >>null if the DTD really is not important). Then pass this DocumentBuilder
> >>to the setDocumentBuilder() method before you call load().
> >>
> >>HTH
> >>Oliver
> >>
> >>
> >
> >Thanks for the response, but I still don't see why a dtd file
> >that is in the same directory as an xml file REQUIRES a full
> >path to it? This has never been an issue with any other code
> >I've used to read XMLs. Any reference material you can point to
> >regarding writing my own 'DocumentBuilder' (still not sure if that's an
> >option because I'll have to use stable code for my project, not a nightly
> >build)? Like I said in my original post, it'd be nice if the existing
> >code supported a 'setValidation(boolean)' method like the Digester does
> >(it uses a referenced dtd file just fine).
> >
> >
> I committed a fix (thanks to Simon Kitching for his tip), which solves
> the problem. A relative path to a DTD will now be resolved correctly.
>
> Oliver
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: commons-user-help@jakarta.apache.org
>
--
James Dalrymple
Telesoft Corp.
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org
|