W3C home > Mailing lists > Public > www-xsl-fo@w3.org > March 2004

RE: Multiple XMLs to One PDF.

From: Patel, Viral <viral.patel@countryfinancial.com>
Date: Fri, 12 Mar 2004 09:38:37 -0600
Message-ID: <7C1965B54EADD61190B80008023D05F405850744@iaautl06.corp.countrylan.com>
To: 'David Carlisle' <davidc@nag.co.uk>, "Patel, Viral" <viral.patel@countryfinancial.com>
Cc: www-xsl-fo@w3.org


Thanks for another very interesting email and idea that you included at the
end of your email.  

Here's my dilemma in a nutshell: 

I have a page on our website that would be similar to a sitemap page that
will list all of the pages (nodes) in our entire website in a hierarchical
format.  Each node will have a checkbox right next to it so that user can
select any number of nodes and click a button at the bottom of the screen
called "Convert to PDF".  Once the "Convert to PDF" button is clicked, a JSP
will take control and get all the XML and corresponding XSL (its really
XSL-FO) files for all nodes that are selected.  I want that JSP to transform
each XML using the corresponding XSL and put the entire output into ONE
master PDF and give it to the user.

I am using Apache's FOP to achieve this.  I have successfully implemented it
where I can convert any one node to pdf and it works fine.  In Apache's FOP,
out-of-box, it outputs the pdf file to any path/location that you specify.
I tried to see if I could have the FOP return some data back to the JSP
instead of writing it out to a file so that way I can in the end combine all
individual data from each transformation and write it out to a pdf file but
I dont think thats possible without making major changes in the Apache FOP's
source packages.  Plus it would be maintenance nightmare as well.  

What do you suggest is the best route?  Can you elaborate more on the idea
that you discussed towards the end of your last email and provide more

In that idea you suggested to do individual transformations and then merge
them - but with out-of-box FOP once I do the transformation (I have to
provide the XML and XSL-FO to do the transformation) it will automatically
output the PDF for that XML file to a given location.  So now I have to
merge PDFs and not XML stylesheets.

I really appreciate all your help.  


-----Original Message-----
From: David Carlisle [mailto:davidc@nag.co.uk]
Sent: Friday, March 12, 2004 9:14 AM
To: viral.patel@countryfinancial.com
Cc: www-xsl-fo@w3.org
Subject: Re: Multiple XMLs to One PDF.

> 2. I have 3 different XSLs that I want to use for each XML: 
ah that makes it more interesting.

You can't really do that in xslt 1, but you can achieve the effect so
long as the three stylesheets are written to use  modes on all templates
and uses of apply-templates, a different mode in each stylesheet.


you can have a top level stylesheet that imports all three stylesheets,
and if it wants to transform a document with the stylesheet using mode
one (say) you'd do

<xsl:apply-templates match="document(@href)" mode="one"/>

when this is executed, even though all your stylesheets have been
imported, only the templates from the stylesheet using mode one will

there are of course alternative strategies.

While joining pdf files together requires specialist software (or a very
very careful reading of the pdf spec) it isn't so hard to merge FO files

You may prefer to do all your transformations separately, using
different stylesheets then use a final "merging" xslt stylesheet that
use the document() function to pull in all the individual stylesheets,
and pull them all under one fo:root. That way you don't need to worry
about combining the transform and the merge. For each FO document you
just need to navigate down to teh part you want and then copy the whole
subtree using xsl:copy-of into your combined FO file.


This e-mail has been scanned for all viruses by Star Internet. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
Received on Friday, 12 March 2004 10:39:14 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:10:00 UTC