cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Piroumian, Konstantin" <KPiroum...@flagship.ru>
Subject RE: logicsheets driving me insane
Date Wed, 20 Mar 2002 16:01:22 GMT
> From: Peter Wieland [mailto:Peter.Wieland@gmx.de] 
> 
> Hi,
> 
> I'm trying for one day to get a logicsheet to do some work 
> for me. I want to print out a drop down menu with values from 
> a database and the format speciefied in my xsp source.
> 
> here is the relevant part of the xsp-page (test.xsp)
> ---------------------------------
>     <list>
>       <tiana-sql:listboxitems table="TianaUser">
>         <tiana-sql:itemelement 
> type="column">Id</tiana-sql:itemelement>
>         <tiana-sql:itemelement type="text"> - </tiana-sql:itemelement>
>         <tiana-sql:itemelement 
> type="column">FirstName</tiana-sql:itemelement>
>         <tiana-sql:itemelement type="text"> </tiana-sql:itemelement>
>         <tiana-sql:itemelement 
> type="column">LastName</tiana-sql:itemelement>
>       </tiana-sql:listboxitems>
>     </list>
> ---------------------------------
> 
> and some parts of my tiana-sql logicsheet
> ---------------------------------
> <xsl:template name="get-columns">
>   <xsl:for-each select="tiana-sql:itemelement[@type='column']">
>     <xsl:text>, </xsl:text>
>     <xsp:logic>TianaSQLHelper.getTablePrefix(objectModel, 
> "<xsl:value-of 
> select="parent::*/@table"/>")</xsp:logic><xsl:value-of select="."/>
>   </xsl:for-each>
> </xsl:template>

If you are going to output something with this code then you should use
<xsp:expr> instead of <xsp:liogic>

> 
> <xsl:template match="tiana-sql:listboxitems[@table]">
>   <xsl:variable name="idcolumn">
>     <xsp:logic>TianaSQLHelper.getIdColumn(objectModel, 
> "<xsl:value-of select="@table"/>")</xsp:logic>

This won't work: logicsheet is applied before any code is run, so you can't
assign a value to XSL variable. Use normal Java variables for that.

>   </xsl:variable>
> 
>   <xsl:variable name="in-cond">
>     <xsl:if test="@in-cond"> WHERE <xsl:value-of 
> select="$idcolumn"/> IN (<xsl:value-of select="@in-cond"/>)</xsl:if>
>   </xsl:variable>
> 
>   <esql:connection>
>     <esql:pool>tiana</esql:pool>
>     <esql:execute-query>
>       <esql:query>
>         <xsl:text>SELECT </xsl:text>
>         <xsp:logic>TianaSQLHelper.getIdColumn(objectModel, 
> "<xsl:value-of select="@table"/>")</xsp:logic>

The same is here: use xsp:expr

>         <xsl:text> AS Id</xsl:text>
>         <xsl:call-template name="get-columns"/>
>         <xsl:text> FROM </xsl:text><xsl:value-of select="@table"/>
>         <xsl:value-of select="$in-cond"/>
>       </esql:query>
>       <esql:results>
>         <esql:row-results>
>           <item>
>             <value><esql:get-string column="Id"/></value>
>             <text>
>               <xsl:for-each select="tiana-sql:itemelement">
>                 <xsl:choose>
>                   <xsl:when test="@type='text'">
>                     <xsl:value-of select="."/>
>                   </xsl:when>
>                   <xsl:when test="@type='column'">
>                     <!--<esql:get-string>
>                       <esql:column>-->
> 		        
> <xsp:logic>TianaSQLHelper.getTablePrefix(objectModel,
> "<xsl:value-of select="parent::*/@table"/>") + "<xsl:value-of 
> select="."/>"</xsp:logic>

And here

>                       <!--</esql:column>
>                     </esql:get-string>-->
>                   </xsl:when>
>                 </xsl:choose>
>               </xsl:for-each>
>             </text>
>           </item>
>         </esql:row-results>
>       </esql:results>
>     </esql:execute-query>
>   </esql:connection>
> </xsl:template>
> ---------------------------------

Although, I might have understood your code a little wrong. See my
logicsheet sample:
http://www.cocooncenter.org/cc/documents/resources/logicsheet/index.html -
this is a simple demonstration of what you are going to achieve.

> 
> This works fine as long as I comment out the part, where I 
> actually do the db request (I just get the names of the 
> columns printed out, instead of the columns). But if I 
> include this request, I get class not found exceptions, what 
> is not very surprising as an empty test_xsp.java file is 
> generated. But why is this file empty. When I use <xsp:expr> 
> ... </> instead of logic, I get an compile error because of a 
> missing ";" in my test_xsp.java.

You are mixing your code with ESQL's, this can be the cause of the problem.

> 
> Can anybody give me a hint how I could get my application working?

It's a little difficult not seeing the stylesheet in all.

> 
> By the way, I never really understood when to use xsp:expr 

When you want to output something (just like <%= %> in JSP)

> and xsp:logic 

This is for performing some Java code, say declaring variables (like <% %>
in JSP). Note, that xsp:logic does not output anything.

>or both of them. And what is the sense of xsp:component?

Never used it before. Is there anybody who knows what is it?

--
Konstantin Piroumian 
kpiroumian@flagship.ru

> 
> Thanks for any help,
> 
> Peter
> 
> ---------------------------------------------------------------------
> 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>

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