On Wednesday 13 March 2002 16:58, Nicola Ken Barozzi wrote:
>. . .
> -------------------------------------------------------------
>  FOP uses iText as a PDF generation library
> -------------------------------------------------------------
>. . .

Maybe the following scenario could help making FOP more 
"pipeline-oriented", making it easier to plug in various renderers, 
layout engines, debugging tools, etc.

I'm just making up component names, hopefully understandable

1. FopParser parses and validates the input XSL-FO document
2. FopPropertyResolver does its job, attributes inheritance, etc.

Then two options:
3a. FopLayoutEngine (existing code, API-coupled as now) computes layout 
and produces PDF 

3b. *or* FopFoDumper dumps the result in XML (or SAX events) using the 
XSL-FO vocabulary but with all attributes explicity specified (as far 
as possible, I know there are some issues here).

After 3b, various XSLT transforms and/or XML-to-something converters 
can be plugged in using the well-defined and loosely-coupled SAX/XML 
interface.

I think using XML/SAX to interface between future pipeline components 
(ParsingAndPropertyResolving -> Layout -> Serialization) opens up much 
more options than using java APIs for this, and could help keep FOP 
small and focused.

If using Cocoon, being able to just resolve properties and pass the 
result on to various transforms opens up new horizons for XSL-FO 
processing. 

At the other end of the pipeline, what about an XML-to-MIF 
converter, for example, much more generally useful than a 
tightly-coupled MIF renderer for FOP. 

Implementing 3b should be fairly easy (isn't that a serialization of 
the FOTree?), and we can go from here to reuse important parts of FOP 
as individual components.

How does this sound?

-- 
 Bertrand Delacrétaz (codeconsult.ch, jfor.org)

 buzzwords: XML, java, XSLT, cocoon, mentoring/teaching/coding.
 disclaimer: eternity is very long. mostly towards the end. get ready.






---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to