Glen Mazza wrote:
(Hmmm...I'm supposed to be learning Cocoon right now,
but am already suffering FOP-withdrawal.  Apache's got
me good...  ;)

[just removed the namespace-prefixes issue you were
mentioning earlier, btw.]

I noticed that.


FOFileHandler.createParser() is just a simple static
function that generates a parser. It can be placed in
any class, and is not something that needs to be inherited. (Actually, the hyphenation class'
PatternParser also creates a parser, although it could
use the one in FOFileHandler as well.)


InputHandler has a abstract getParser() method which
is used by Driver et. al. This method *does* need to
be overridden in each of the base classes, and of
course it is.


It just so happens, but is not necessarily required,
that the current implementation of XSLTInputHandler
uses the createParser() of FOFileHandler for its
implementation of getParser(). This is just an
implementation detail.


XSLTInputHandler's getXMLFilter() (called by its
getParser()):
....
// Create an XMLReader.
XMLReader parser = FOFileHandler.createParser();
....

I preferred the direct reference to the FOFileHandler
method (as opposed to simple inheritance) for reasons
of documentation:  this way, we're clearly stating
that XSLTInputHandler is using FOFileHandler's parser
as part of its XMLFilter.

(Also, at the time I was doing this, I was planning on
having a DOMInputHandler--but was running into
difficulty doing so--that I believe would have caused
a createParser() to not have been relevant in the base
class.)

Glen,


Thanks for the explanation, and thanks for surfacing.

Peter
--
Peter B. West <http://www.powerup.com.au/~pbwest/resume.html>



Reply via email to