cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tagunov Anthony" <atagu...@nnt.ru>
Subject Re: News site with XSP and SQL. (fwd)[C1][C2] variables in XSP
Date Wed, 10 Jan 2001 09:20:27 GMT
Hello, Donald and evrybody!!

On Tue, 9 Jan 2001 13:14:07 -0500 (EST), Donald Ball wrote:

>
>
>---------- Forwarded message ----------
>Date: Tue, 9 Jan 2001 00:29:24 -0500 (EST)
>From: Donald Ball <balld@webslingerZ.com>
>To: Cocoon-Users <cocoon-users@xml.apache.org>, xsp-dev@xml.apache.org
>Subject: Re: News site with XSP and SQL.
>
>On Sun, 7 Jan 2001, Christian Parpart wrote:
>
>> Hi,
>>
>> my final goal is to create a site where
>> people can read news and can give comments.
>> The first step is done. You can read the news.
>> To create them and display it to the client
>> I am using MySQL.
>>
>> Now my next step is to modify it in that way,
>> that the clients user can add a comment to a
>> news entry or add a comment to a taken comment
>> from a news entry. Here you're creating a tree
>> in SQL. That's not the problem, I think.
>> My problem is, to let them working fine with
>> XSP a.s.o.
>>
>> My database record looks like this:
>>
>> table news (
>> 	ID		bigint unsigned auto imcrement primary key not null,
>> 	ParentID	bigint unsigned not null,
>> 	Date		timestamp not null,
>> 	Author	varchar(40) not null,
>> 	AuthorEMail	varchar(40) not null,
>> 	Title		varchar(80) not null,
>> 	texttype	tinyint not null,
>> 	text		text not null
>> );
>>
>> ID is the unique identification number of a
>> record(news entry or a comment). ParentID is
>> either zero, that means it is a news entry,
>> otherwise it has the ID from its parent,
>> mayby a news entry or a comment.
>>
>> This works fine.
>>
>> To display all news I can use a simple esql query.
>> But how can I use that to display its comments and
>> to display the comments of the comments and so on?
>
>as a matter of fact, i think you've stumbled on one of esql's shortcomings
>- i don't think you can do recursive queries to an arbitrary depth. that
>is to say, you could manually recurse to a fixed depth, but it would be a
>pain and look ugly to boot. the real problem is that when doing flow
>control using xsp logicsheets, you don't have access to request-time
>information.
>
>if you could put xsp elements inside functions, this would be possible,
>since then you could make request-time decisions about invoking blocks of
>xsp code - but doing that makes you have to pass the local xsp java
>variables into the function, which is sort of a headache - and i think,
>actually, impossible to do thoroughly since you don't know what variables
>other logicsheets will be defining that expressions you must evaluate
>depend on. 

Yes! That's it! I also hit this problem! And it looks general enough! Anyone who would write
functions for
XSP pages will hit the problem of these varibles!
That's what one of the patches I proposed for xsp-java.xsl was for..
Sending it again, hoping for a review :)

hmm, is there a way to get an array of the variables currently
>declared at the current function level in java? i know it's pretty easy to
>get at in perl... anyway, here's the idea:
>
><xsl:template match="xsp:page">
>  <xsp:logic>
>    void showComments(Integer id, Integer parent) throws Exception {
>      <esql:execute-query>
>        <xsp:logic>if (id != null) {
>          <esql:query><xsp:expr>"select id,title from news where id = "+id</xsp:expr></esql:query>
>        } else if (parent != null) {
>          <esql:query><xsp:expr>"select id,title from news where parentid
= "+parent</xsp:expr></esql:query>
>        }
>        <esql:results>
>          <esql:row-results>
>            <news>
>              <id><esql:get-string column="1"/></id>
>              <title><esql:get-string column="2"/></title>
>              <xsp:logic>showComments(null,new Integer(<esql:get-int column="1"/>));</xsp:logic>
>            </news>
>          </esql:row-results>
>        </esql:results>
>      }
>    </esql:execute-query>
>  </xsp:logic>
>  <xsl:apply-templates select="*|@*"/>
></xsl:template>
>
>...
>
><xsl:template name="news:comments">
>  <xsl:variable name="id"><xsl:call-template name="get-nested-string"><xsl:with-param
name="content" select="news:id"/></xsl:call-
template></xsl:variable>
>  <xsp:logic>showComments(new Integer(<xsl:value-of select="$id"/>));</xsp:logic>
></xsl:template>
>
>but it's not going to work as is, because the showComments function will
>need access to xspCurrentNode, et. al., or their equivalents in c2, not to
>mention the esql local variables. any suggestions?
>
>- donald
>
>
>
>---------------------------------------------------------------------
>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