You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Phil Blake <ph...@tcp.net.au> on 2001/10/25 01:57:26 UTC

Help needed Passing Parameters

I am missing something when it comes to getting and passing request 
arguments. I've looked at the cocoon examples, and although my test 
example appears to match the cocoon one in every way there is obviously 
something fundamental missing.

I think I'm pretty close. :) If anyone could help me get past this 
misunderstanding it would be much appreciated.

My example scenario allows the user to enter a URL like the following: 
http://hostname/example/colour.html?person=Phil%20Blake
The result would be a HTML page with the person's favorite colour.

In the sitemap I added a generic matcher that matches anything .html and 
returns the corresponding xsp. I figured (as opposed to read anywhere in 
documentation) that I needed to include the use-request-parameters and 
use-browser-capabilities-db parameters - I don't know why I want them, 
just that they appeared in the cocoon sitemap.
	<!-- Match *.html and map to *.xsp -->
		<map:match pattern="**.html">
			<map:generate type="serverpages" src="{1}.xsp"/>
			<map:transform src="Example.xsl">
                                 <map:parameter 
name="use-request-parameters" value="true"/>
                                 <map:parameter 
name="use-browser-capabilities-db" value="true"/>
			</map:transform>
			<map:serialize/>
		</map:match>

The requested xsp page looks like this. (colour.xsp)
<xsp:page
           language="java"
           xmlns:xsp="http://apache.org/xsp"
           xmlns:xsp-request="http://apache.org/xsp/request/2.0"
           xmlns:xsp-response="http://apache.org/xsp/response/2.0">
     <xsp:logic>
         String person = null;
     </xsp:logic>
	<html>
		<title>The favorite colour page - Yay"</title>
             	<xsp:logic>
                 		person = <xsp-request:get-parameter name="person"/>;
            	 </xsp:logic>
	 	 <xsp:expr>person</xsp:expr> has a favorite colour! It is 
<person-colour/>
	</html>
</xsp:page>

I then have a half/broken stylesheet that is supposed to select the 
person named in the URL person path arg. Then return their favorite 
colour. However, as you'll notice, I can't see how to get from the first 
line, to the second one. I assume the variable selectedPerson contains a 
person node. (I don't know 'cause I can't make it work).
However, I have no idea how to use that variable to retrieve the colour.
XSL Stylesheet:
<xsl:template match="person-colour">
	<!-- Select the person, somehow -->
	<xsl:variable name="selectedPerson" 
select="document('people.xml',.)/people/person[name='$person']"/>
	<!-- return their favorite colour, somehow  -->
	<xsl:value-of select="$selectedPerson/favoriteColour">
</xsl:template>



XML External Content (people.xml)
<people>
	<person>
		<name>Phil</name>
		<favoriteColour>blue</favoriteColour>
	</person>
	<person>
		<name>Arthur</name>
		<favoriteColour>yellow</favoriteColour>
	</person>
</people>


Thanks for your help. Have fun,

Phil


---------------------------------------------------------------------
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>


Re: Help needed Passing Parameters

Posted by Christian Schmitt <cs...@ffzj0ia9.bank.dresdner.net>.
Phil,
I would change your XSP to this:
<xsp:page
           language="java"
           xmlns:xsp="http://apache.org/xsp"
           xmlns:xsp-request="http://apache.org/xsp/request/2.0"
           xmlns:xsp-response="http://apache.org/xsp/response/2.0">
     <xsp:logic>
         String person = null;
     </xsp:logic>
	<html>
		<title>The favorite colour page - Yay"</title>
             	<xsp:logic>
                 		person = <xsp-request:get-parameter name="person"/>;
            	 </xsp:logic>
	 	 <xsp:expr>person</xsp:expr> has a favorite colour! It is 
        <person-colour><xsp:expr>person</xsp:expr></person-colour>
	</html>
</xsp:page>

And then in your stylesheet do this:
<xsl:template match="person-colour">
	<!-- Select the person, somehow -->
	<xsl:variable name="selectedPerson" 
        select="document('people.xml',.)/people/person[name='current()']"/>
	<!-- return their favorite colour, somehow  -->
	<xsl:value-of select="$selectedPerson/favoriteColour">
</xsl:template>


This is untested (of course ;-)


Hth,
Christian



On Thu, Oct 25, 2001 at 09:57:26AM +1000, Phil Blake wrote:
> I am missing something when it comes to getting and passing request 
> arguments. I've looked at the cocoon examples, and although my test 
> example appears to match the cocoon one in every way there is obviously 
> something fundamental missing.
> 
> I think I'm pretty close. :) If anyone could help me get past this 
> misunderstanding it would be much appreciated.
> 
> My example scenario allows the user to enter a URL like the following: 
> http://hostname/example/colour.html?person=Phil%20Blake
> The result would be a HTML page with the person's favorite colour.
> 
> In the sitemap I added a generic matcher that matches anything .html and 
> returns the corresponding xsp. I figured (as opposed to read anywhere in 
> documentation) that I needed to include the use-request-parameters and 
> use-browser-capabilities-db parameters - I don't know why I want them, 
> just that they appeared in the cocoon sitemap.
> 	<!-- Match *.html and map to *.xsp -->
> 		<map:match pattern="**.html">
> 			<map:generate type="serverpages" src="{1}.xsp"/>
> 			<map:transform src="Example.xsl">
>                                  <map:parameter 
> name="use-request-parameters" value="true"/>
>                                  <map:parameter 
> name="use-browser-capabilities-db" value="true"/>
> 			</map:transform>
> 			<map:serialize/>
> 		</map:match>
> 
> The requested xsp page looks like this. (colour.xsp)
> <xsp:page
>            language="java"
>            xmlns:xsp="http://apache.org/xsp"
>            xmlns:xsp-request="http://apache.org/xsp/request/2.0"
>            xmlns:xsp-response="http://apache.org/xsp/response/2.0">
>      <xsp:logic>
>          String person = null;
>      </xsp:logic>
> 	<html>
> 		<title>The favorite colour page - Yay"</title>
>              	<xsp:logic>
>                  		person = <xsp-request:get-parameter name="person"/>;
>             	 </xsp:logic>
> 	 	 <xsp:expr>person</xsp:expr> has a favorite colour! It is 
> <person-colour/>
> 	</html>
> </xsp:page>
> 
> I then have a half/broken stylesheet that is supposed to select the 
> person named in the URL person path arg. Then return their favorite 
> colour. However, as you'll notice, I can't see how to get from the first 
> line, to the second one. I assume the variable selectedPerson contains a 
> person node. (I don't know 'cause I can't make it work).
> However, I have no idea how to use that variable to retrieve the colour.
> XSL Stylesheet:
> <xsl:template match="person-colour">
> 	<!-- Select the person, somehow -->
> 	<xsl:variable name="selectedPerson" 
> select="document('people.xml',.)/people/person[name='$person']"/>
> 	<!-- return their favorite colour, somehow  -->
> 	<xsl:value-of select="$selectedPerson/favoriteColour">
> </xsl:template>
> 
> 
> 
> XML External Content (people.xml)
> <people>
> 	<person>
> 		<name>Phil</name>
> 		<favoriteColour>blue</favoriteColour>
> 	</person>
> 	<person>
> 		<name>Arthur</name>
> 		<favoriteColour>yellow</favoriteColour>
> 	</person>
> </people>
> 
> 
> Thanks for your help. Have fun,
> 
> Phil
> 
> 
> ---------------------------------------------------------------------
> 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>

---------------------------------------------------------------------
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>


Re: Help needed Passing Parameters

Posted by Martin Man <Ma...@seznam.cz>.
hi,
	your example is not going to work at all, ..., i suggest you to take a
look at java source code generated from xsp page, this code is located
somewhere in tomcat/work/localhost*/cocoon/org/apache/www/...your_xsp.java, 

you'll find there that element <person-colour> and Java variable person are
cmpletely unrelated, you might try in xsp something like

<xsp:element name="person-colour">
	<xsp:attribute name="person"><xsp-request:get-parameter 
		name="person"/></xsp:attribute>
</xsp:element>

this way the XML output generated by XSP page will contain somewhere the
element

<person-colour person="Peter"/> // or whatever your request parameter was

then you can match in your XSL the element person-colour and use its attribute
@person to take a value from external xml file, ...


cheers,
martin

On Thu, Oct 25, 2001 at 09:57:26AM +1000, Phil Blake wrote:
> I am missing something when it comes to getting and passing request 
> arguments. I've looked at the cocoon examples, and although my test 
> example appears to match the cocoon one in every way there is obviously 
> something fundamental missing.
> 
> I think I'm pretty close. :) If anyone could help me get past this 
> misunderstanding it would be much appreciated.
> 
> My example scenario allows the user to enter a URL like the following: 
> http://hostname/example/colour.html?person=Phil%20Blake
> The result would be a HTML page with the person's favorite colour.
> 
> In the sitemap I added a generic matcher that matches anything .html and 
> returns the corresponding xsp. I figured (as opposed to read anywhere in 
> documentation) that I needed to include the use-request-parameters and 
> use-browser-capabilities-db parameters - I don't know why I want them, 
> just that they appeared in the cocoon sitemap.
> 	<!-- Match *.html and map to *.xsp -->
> 		<map:match pattern="**.html">
> 			<map:generate type="serverpages" src="{1}.xsp"/>
> 			<map:transform src="Example.xsl">
>                                 <map:parameter 
> name="use-request-parameters" value="true"/>
>                                 <map:parameter 
> name="use-browser-capabilities-db" value="true"/>
> 			</map:transform>
> 			<map:serialize/>
> 		</map:match>
> 
> The requested xsp page looks like this. (colour.xsp)
> <xsp:page
>           language="java"
>           xmlns:xsp="http://apache.org/xsp"
>           xmlns:xsp-request="http://apache.org/xsp/request/2.0"
>           xmlns:xsp-response="http://apache.org/xsp/response/2.0">
>     <xsp:logic>
>         String person = null;
>     </xsp:logic>
> 	<html>
> 		<title>The favorite colour page - Yay"</title>
>             	<xsp:logic>
>                 		person = <xsp-request:get-parameter name="person"/>;
>            	 </xsp:logic>
> 	 	 <xsp:expr>person</xsp:expr> has a favorite colour! It is 
> <person-colour/>
> 	</html>
> </xsp:page>
> 
> I then have a half/broken stylesheet that is supposed to select the 
> person named in the URL person path arg. Then return their favorite 
> colour. However, as you'll notice, I can't see how to get from the first 
> line, to the second one. I assume the variable selectedPerson contains a 
> person node. (I don't know 'cause I can't make it work).
> However, I have no idea how to use that variable to retrieve the colour.
> XSL Stylesheet:
> <xsl:template match="person-colour">
> 	<!-- Select the person, somehow -->
> 	<xsl:variable name="selectedPerson" 
> select="document('people.xml',.)/people/person[name='$person']"/>
> 	<!-- return their favorite colour, somehow  -->
> 	<xsl:value-of select="$selectedPerson/favoriteColour">
> </xsl:template>
> 
> 
> 
> XML External Content (people.xml)
> <people>
> 	<person>
> 		<name>Phil</name>
> 		<favoriteColour>blue</favoriteColour>
> 	</person>
> 	<person>
> 		<name>Arthur</name>
> 		<favoriteColour>yellow</favoriteColour>
> 	</person>
> </people>
> 
> 
> Thanks for your help. Have fun,
> 
> Phil
> 
> 
> ---------------------------------------------------------------------
> 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>
> 
> 

-- 
2CC0 4AF6 92DA 5CBF 5F09  7BCB 6202 7024 6E06 0223
http://mman.dyndns.org/mman.gpg

---------------------------------------------------------------------
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>


RE: Help needed Passing Parameters

Posted by Valdas Rapsevicius <va...@lgt.lt>.
sorry, but can't help You.
This trick with

	<xsl:variable name="selectedPerson"
select="document('people.xml',.)/people/person[name='$person']"/>
	<xsl:value-of select="$selectedPerson/favoriteColour">

didn't work for me too.
You took to selectedPerson just a value of
document('people.xml',.)/people/person[name='$person'] node, but not entire
node...

As I noticed nobody succeded in passing a node as variable or param.
If somebody did - please tell us how?

Good luck,
Valdo
-----------------------
mailto:valdo@lgt.lt


-----Original Message-----
From: Phil Blake [mailto:phil@tcp.net.au]
Sent: Thursday, October 25, 2001 1:57 AM
To: cocoon-users@xml.apache.org
Subject: Help needed Passing Parameters


I am missing something when it comes to getting and passing request
arguments. I've looked at the cocoon examples, and although my test
example appears to match the cocoon one in every way there is obviously
something fundamental missing.

I think I'm pretty close. :) If anyone could help me get past this
misunderstanding it would be much appreciated.

My example scenario allows the user to enter a URL like the following:
http://hostname/example/colour.html?person=Phil%20Blake
The result would be a HTML page with the person's favorite colour.

In the sitemap I added a generic matcher that matches anything .html and
returns the corresponding xsp. I figured (as opposed to read anywhere in
documentation) that I needed to include the use-request-parameters and
use-browser-capabilities-db parameters - I don't know why I want them,
just that they appeared in the cocoon sitemap.
	<!-- Match *.html and map to *.xsp -->
		<map:match pattern="**.html">
			<map:generate type="serverpages" src="{1}.xsp"/>
			<map:transform src="Example.xsl">
                                 <map:parameter
name="use-request-parameters" value="true"/>
                                 <map:parameter
name="use-browser-capabilities-db" value="true"/>
			</map:transform>
			<map:serialize/>
		</map:match>

The requested xsp page looks like this. (colour.xsp)
<xsp:page
           language="java"
           xmlns:xsp="http://apache.org/xsp"
           xmlns:xsp-request="http://apache.org/xsp/request/2.0"
           xmlns:xsp-response="http://apache.org/xsp/response/2.0">
     <xsp:logic>
         String person = null;
     </xsp:logic>
	<html>
		<title>The favorite colour page - Yay"</title>
             	<xsp:logic>
                 		person = <xsp-request:get-parameter name="person"/>;
            	 </xsp:logic>
	 	 <xsp:expr>person</xsp:expr> has a favorite colour! It is
<person-colour/>
	</html>
</xsp:page>

I then have a half/broken stylesheet that is supposed to select the
person named in the URL person path arg. Then return their favorite
colour. However, as you'll notice, I can't see how to get from the first
line, to the second one. I assume the variable selectedPerson contains a
person node. (I don't know 'cause I can't make it work).
However, I have no idea how to use that variable to retrieve the colour.
XSL Stylesheet:
<xsl:template match="person-colour">
	<!-- Select the person, somehow -->
	<xsl:variable name="selectedPerson"
select="document('people.xml',.)/people/person[name='$person']"/>
	<!-- return their favorite colour, somehow  -->
	<xsl:value-of select="$selectedPerson/favoriteColour">
</xsl:template>



XML External Content (people.xml)
<people>
	<person>
		<name>Phil</name>
		<favoriteColour>blue</favoriteColour>
	</person>
	<person>
		<name>Arthur</name>
		<favoriteColour>yellow</favoriteColour>
	</person>
</people>


Thanks for your help. Have fun,

Phil


---------------------------------------------------------------------
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>





---------------------------------------------------------------------
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>