cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mario Muja <mario.m...@delaval.com>
Subject Re: XSP code reuse between files
Date Mon, 03 Sep 2001 07:28:08 GMT
Since my first start with Cocoon, I am searching for an easy way to 
store the result of an XSP page to a file for later reuse in other XSPs. 
I could not find a way to do this neither in the documentation nor in 
the mail archives. Has somebody out there already done this? Then please 
help us and post an example.

Mario


Alexandru COSTIN wrote:

>	Thank your for your suggestion.
>	I wonder though how can this mecanism be used when trying to reuse the
>XSP code between multiple files...
>	I would like to avoid redefining the reusedPart method for everypage,
>as it's definition will remain unchanged
>				Alexandru
>
>>The capture taglib won't solve this problem, because the captured 
>>content can't be parameterized.
>>
>>To achieve this, you can put the reused part in a method defined in a 
>><xsp:logic> block child of <xsp:page>. Below is an example, based on 
>>simple.xsp form the samples.
>>
>><xsp:page
>>           language="java"
>>           xmlns:xsp="http://apache.org/xsp"
>>           xmlns:xsp-request="http://apache.org/xsp/request/2.0"
>>           xmlns:log="http://apache.org/xsp/log/2.0"
>>           xmlns:capture="http://apache.org/cocoon/capture/1.0"
>> >
>>
>><xsp:logic>
>>private void reusedPart(String param) throws SAXException {
>>    AttributesImpl xspAttr = new AttributesImpl();
>>    <para>Hi there <xsp:expr>param</xsp:expr> ! I'm a simple dynamic

>>page generated by XSP (eXtensible Server Pages).</para>
>>
>>    <para>I was requested as the URI: <b><xsp-request:get-uri 
>>as="xml"/></b></para>
>>
>>}
>></xsp:logic>
>>   <page>
>>   <log:logger name="xsp-sample" filename="xsp-sample.log"/>
>>   <log:debug>Processing the beginning of the page</log:debug>
>>
>>    <title>A Simple XSP Page</title>
>>
>>    <content>
>>
>>    <capture:fragment-variable name="page_part">
>>      <para>These 2 paragraphs were generated at the start of the XSP, 
>>and captured for insertion at the end.</para>
>>
>>      <para>Brought to you by Cocoon2 at <xsp:expr>new 
>>Date()</xsp:expr>.</para>
>>    </capture:fragment-variable>
>>
>>    <xsp:logic>reusedPart("first time");</xsp:logic>
>>
>>    <xsp:logic>reusedPart("second time");</xsp:logic>
>>
>>    <para>The following list was dynamically generated:</para>
>>
>>...
>>
>>Hope this helps.
>>
>>Mario Muja wrote:
>>
>>>Hi Alexandru,
>>>reusing part of an XSP result is something I plan to achieve with the 
>>>new logicsheet CAPTURE.XSL. You will find it under
>>>
>>>src\org\apache\cocoon\component\language\markup\xsp\java
>>>
>>>in the source tree of the 2.0 and 2.1 branch. This logicsheet contains 
>>>markup to copy part of an XSP to an XMLFragment variable, which can be 
>>>later output using
>>>
>>><xsp:expr>here put the name of the fragment variable</xsp:expr>.
>>>
>>>I never used this logicsheet but I think that it can do what you have 
>>>described. Please let us know about your experiences with this new 
>>>logicsheet.
>>>
>>>Hope this helps.
>>>Mario
>>>
>>>
>>>Alexandru COSTIN wrote:
>>>
>>>>       Hello,
>>>>       I have created succesfully some dynamic pages using cocoon, but
>>>>I have one question about code reusability.
>>>>       The main problem is that in the XSP file, I have XML trees that
>>>>are very similar, except for a parameter.
>>>>
>>>>       I will paste a code snippet below
>>>>
>>>><calevel>
>>>>       <esql:execute-query>
>>>>               <esql:query>
>>>>                       select * from v_inf where idtype_inf=6
>>>>               </esql:query>
>>>>               <esql:results>
>>>>               <esql:row-results>
>>>>                       <row>
>>>>                
>>>><id_inf><esql:get-string                                      
>>>>                    column="id_inf"/></id_inf>
>>>>                <name_itm><esql:get-string
>>>>                     column="name_itm"/></name_itm>
>>>>                       </row>
>>>>                </esql:row-results>
>>>>                </esql:results>
>>>>       </esql:execute-query>
>>>></calevel>
>>>>
>>>>       This part has to be repeated (with the same columns and
>>>>structure) with
>>>>idtype_inf=7,8, etc.
>>>>       How can I do this without rewritting this code snippet x-times?
>>>>A standard include mecanism has to be possible in Cocoon, or this can be
>>>>done otherwise.
>>>>       I think I have a solution, but I don't know if it's the best
>>>>one. This part can be embedded in a XSP:logic loop that uses an array
>>>>with the 6,7,8 values and pass the values to the embedded part.
>>>>                              Alexandru
>>>>
>>>>



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

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


Mime
View raw message