You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by fo...@neonics.com on 2001/01/11 16:17:55 UTC

Re: how can I do this ? (in C2???)


Hello there,

this example should work fine in C1 but I'm trying to get something
like this working in C2..

Since you sound like an expert (not that I didn't already know what
you explained ;)) could you deliver this stylesheet to me working
under C2? The only difference in your stylesheet compared to mine was the
inclusion of the <xsl:copy/> tag. 





On Wed, 10 Jan 2001, Donald Ball wrote:

> On Wed, 10 Jan 2001, Piyush Sheth wrote:
> 
> >  my logicsheet looks like this
> > -----
> > ------
> > ----
> > <xsp:structure>mylib.*</xsp:structure>
> > <xsp:logic>
> >      private String get( String param )
> >      {
> >            new mylib.foo( param ).toString();
> >      }
> > </xsp:logic>
> >
> > <xsl:template match="mns:substitute"/>
> > <!-- here I want call get("somethin") defined above
> > and use its returned value in xsl:if.
> >
> > <xsl:if test=get("somethin")   .....
> >
> >
> >
> > -->
> > </xsl:template>
> > -------
> > --------
> > -------
> > ------
> >
> > How do I do that ?
> 
> you're really mangling the logicsheet concept here. logicsheets are xslt
> stylesheets which are applied to xsp pages to transform tags in special
> namespaces into tags (and content) in the xsp namespace. e.g. this page
> 
> <esql:connection>
>   <esql:driver>org.postgresql.Driver</esql:driver>
>   ...
> </esql:connection>
> 
> is transformed into (something like) this:
> 
> <xsp:logic>
>   Class.forName("org.postgresql.Driver").newInstance();
>   ...
> </xsp:logic>
> 
> and then finally transformed into a java class.
> 
> okay so far? good. now, you're trying to evalute a java method inside an
> xpath expression:
> 
> > <xsl:if test=get("somethin")   .....
> 
> you can't _do_ that. when your logicsheet is being applied, the java class
> doesn't even _exist_ yet, you can't call one of its methods. you're in the
> process of _creating_ the java class at logicsheet application time.
> 
> for the record, your logicsheet should look something more like this:
> 
> <xsl:template match="xsp:page">
>   <xsl:copy>
>     <xsl:apply-templates select="@*"/>
>     <xsp:structure>
>       <xsp:include>mylib.*</xsp:include>
>     </xsp:structure>
>     <xsp:logic>
>       private String get(String param) {
>         new mylib.foo( param ).toString();
>       }
>     </xsp:logic>
>     <xsl:apply-templates/>
>   </xsl:copy>
> </xsl:template>
> 
> <xsl:template match="mns:substitute">
>   <xsp:logic>
>     if ("bar".equals(get("foo"))) {
>       ...
>     }
>   </xsp:logic>
> </xsl:template>
> 
> <xsl:template match="@*|node()" priority="-1">
>   <xsl:copy>
>     <xsl:apply-templates select="@*|node()"/>
>   </xsl:copy>
> </xsl:template>
> 
> - donald
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: cocoon-users-unsubscribe@xml.apache.org
> For additional commands, e-mail: cocoon-users-help@xml.apache.org
>