I am in the process of trying to create a Cocoon "baby-block" that can be 
used to generate output from a DocBook source file.  I was hoping that the 
group could help me puzzle through the "right way" to accomplish my goal.

The process that I am envisioning looks something like this...

1. The user visits a web page where they specify the DocBook source file 
they would like to upload and the various processing options they would 
like to use. These options are presented as pulldowns, text fields, 
checkboxes, etc.
2. The uploaded file into a temporary directory somewhere
3. The DocBook stylesheets are applied to the file, using the specified 
processing options
4. (For now) a PDF document is returned to the user

My primary implementation goal is to use the minimum amount of code as 
possible.  Right now the W3, and in my opinion the Cocoon developers, are 
pushing for a more declarative web development experience (check out the 
XForms spec for an example) so I would like my implementation to adhere to 
this vision.

Accomplishing part 1 is fairly straightforward, as it is a simple XHTML 
page, no bells or whistles.  I could base it on a transform, but for now 
that seems like overkill.

Part 2 looks to be be handled by the SourceUploadAction that is currently 
sitting in the scratchpad.  The alternative that is most often discussed in 
this list is to use an XSP page to do the work, which I would prefer not to 
do for the reasons discussed earlier.  Any other techniques would be 
greatly appreciated.

Part 3 looks to be the most complicated.  I don't want the user to have to 
always select all of the processing options.  I also don't want to have to 
keep track of the default values used by the DocBook stylesheets, which 
would be a maintenance nightmare.  My plan is to provide a "use default" 
option for the pulldowns and to assume that empty text fields mean "use 
default".

Another problem is that the DocBook stylesheets assume that there will be 
a "driver" stylesheet that looks like:

   <xsl:stylesheet
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   version='1.0'>
     <xsl:import
     href="file:///Users/jafoster/Development/docbook-xsl-1.50.0/fo/docbook.
xsl"/>
     <xsl:param name="use.extensions"/>
     <xsl:param name="autotoc.label.separator"/>
   </xsl:stylesheet>

I would really like to do things "properly" and use the driver stylesheet 
approach.  This means that I need to first use the submitted form to create 
the driver stylesheet and then use that new stylesheet to process the 
uploaded file.

At a guess what I will have to do is use two different pipelines.  The 
first will use some kind of "FileWritingTransformer" or "WriteableSource" 
or something similar to generate the driver stylesheet.  That pipeline will 
then call the second pipeline which will actually do the transformation and 
generate the PDF.  Hopefully someone can provide some advice on this part 
of the implementation.  One issue that I have no idea how to address is the 
namespacing issues associated with having one XSLT generate another XSLT.

Assuming that I can get this to work, part 4 is automatic, assuming that I 
use Saxon.  As of today Xalan can't handle DocBook, so I am using the 
"specify your own factory" approach and forcing the use of Saxon.

I have every intention of documenting the full design process and 
implementation of this  project, assuming that I can ever make it work.  I 
know that the DocBook community would love to have an automated way for new 
users to play with the DocBook stylesheets in a controlled manner.

Thanks for any help you can give.  Once this is all documented, you 
(hopefully) won't have to answer these kind of questions again!

Jason Foster


---------------------------------------------------------------------
Please check that your question  has not already been answered in the
FAQ before posting.     <http://xml.apache.org/cocoon/faq/index.html>

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

Reply via email to