You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Mario Muja <ma...@delaval.com> on 2001/09/03 09:28:08 UTC

Re: XSP code reuse between files

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: <co...@xml.apache.org>
For additional commands, e-mail: <co...@xml.apache.org>


XSP code reuse problems

Posted by Alexandru COSTIN <ac...@iakt.rdsnet.ro>.
	Hello,
	Trying to implement the code reuse with the XSP method reusePart,
I've come into problems when the method should use the esql taglib.
	When I write a simple method, it works flawlessly and it's
reusable.
	But when I try to add a esql quey, I ran into problems.
	The pasted code below does not execute the esql part, and I think
this happend because the code fragment is locate above the <page> tag.

<xsp:logic>
private void TwoLevel(String param) throws SAXException {
	AttributesImpl xspAttr = new AttributesImpl();
	int k = 1;
	int idinf = 0;
	</xsp:logic>

	<esql:execute-query>
			<esql:query>
				select * from v_inf where (idinf_inf is
null and idtype_inf=1) order by name_itm
			</esql:query>
   </esql:execute-query>

  <xsp:logic>
   <recordset1>
<xsp:expr>param</xsp:expr>
   </recordset1>
}
</xsp:logic>

			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: <co...@xml.apache.org>
For additional commands, e-mail: <co...@xml.apache.org>