cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Grzegorz Kossakowski <>
Subject Re: Cocoon 2.1 environment objects from a Java XSLT extension
Date Thu, 11 Oct 2007 17:47:23 GMT
Tobia Conforto pisze:
> wrote:
>> XSLT Extensions assist formatting.  Data collection belongs in the XML
>> generation phase.  Using XSLT Extensions to generate data is a very
>> bad practice.  What are the requirements?
> Let me explain better.
> I need to translate URIs in a XML document, in the middle of a pipeline,
> fetching relevant information from a SQL database.  "In the middle of a
> pipeline" means that there are various other steps before it, so I
> cannot fetch this SQL data in the initial generator.
> At first I tried to have a sub-pipeline do the job, using the document()
> XPath function with a cocoon: schema, but it was too slow.
> My next (and current) idea is transforming the XML with XSLT, while
> coding the actual URI transformations (including the SQL queries) as a
> Java extension function, to be called from XSLT where appropriate.
> I'm hitting a wall, because I need a DataSourceComponent to be able to
> make SQL queries, but a Java XSLT extension class doesn't have any
> access to Cocoon's object model (that I can see.)
> I cannot pass the DataSourceComponent, or any other interesting object,
> from the sitemap to my extension function, passing through the XSLT as a
> parameter, because XSLT parameters get passed from the sitemap as strings.
> Suggestions are welcome.
> My last resort is doing everything as a custom transformer, but I'd like
> to avoid it, as I'm not too keen on coding in Sax what can easily be
> dealt with in XSLT (changing a bunch of attribute values.)  Although it
> wouldn't be too hard with Sax either...

I'm not sure if it's going to fit in your case but I would suggest to take a look at Cocoon's
powerful LinkRewriterTransformer[1].

Basically all you would need to do is to implement your own input module (quite simple task)
configure transformer so it uses your own input module.

I strongly agree that using extension functions in your case that access external that is
*NOT* a
good idea.


Grzegorz Kossakowski
Committer and PMC Member of Apache Cocoon

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message