cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Grzegorz Kossakowski <gkossakow...@apache.org>
Subject Re: Cocoon 2.1 environment objects from a Java XSLT extension
Date Thu, 11 Oct 2007 17:47:23 GMT
Tobia Conforto pisze:
> solprovider@apache.org 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
quite
powerful LinkRewriterTransformer[1].

Basically all you would need to do is to implement your own input module (quite simple task)
and
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.

[1] http://cocoon.apache.org/2.1/apidocs/org/apache/cocoon/transformation/LinkRewriterTransformer.html

-- 
Grzegorz Kossakowski
Committer and PMC Member of Apache Cocoon
http://reflectingonthevicissitudes.wordpress.com/

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message