Erik,

 

      That did it (#3)!!!! Thank you so much.  It was driving me nuts.

 

Greg

 

 

Message: 7

Date: Thu, 11 Nov 2004 23:22:25 +0100

From: Erik Bruchez <[EMAIL PROTECTED]>

Organization: Orbeon, Inc.

To: [EMAIL PROTECTED]

Subject: Re: [orbeon-user] View evaluation

Reply-To: [EMAIL PROTECTED]

 

Greg,

 

I think you are hitting some caching issue: the result of the transformation is cached, and not reloaded. Of course this is not what you would like to happen.

 

In general, XSLT transformations are side-effect-free, which means that for a set of given inputs, and a given stylesheet, the output will always be the same. This changes when you introduce a function such as

random() or current-dateTime().

 

Ideally, I think you would want a generic mechanism to tell that the output of a processor must never be cached. Right now there is no such mechanism. So you need a way of making sure the stylesheet is read. I can see a few workarounds:

 

1. Put a debug attribute on the data output of the stylesheet. For this, you have to actually use an XPL file for the view, and call your stylesheet from there. The drawback: you output debug information!

 

2. Making sure the input of the view is not static. For example, if it reads something from the SQL processor, its output will never be cached.

Drawback: doesn't work if you don't use something like the SQL processor!

 

3. The XSLT transformer checks on the document() function, and doesn't cache if there are dynamic document references. So try in your view to put something like this:

 

<xsl:variable name="nocache1" select="''"/> <xsl:variable name="nocache2" select="document($nocache1)"/>

 

-Erik

 

Gregory Blajian wrote:

>             Does anyone know what aspects of the view are evaluated

> every time the page is invoked?  I am trying to use the following as

> my view element in the page flow:

> 

>

> 

> <xsl:if test="true()">

> 

>             <xsl:variable name="myRandNum"

>select="math:random()"  xmlns:math="java:java.lang.Math"/>

> 

>             <xsl:variable name="myDate">

>                         <xsl:value-of select="current-dateTime()"/>

> 

>             </xsl:variable>

> 

>             <xhtml:input type="hidden" id="gen_rand_num" 

>value="{$myRandNum}_{$myDate}"/>

> 

> </xsl:if>

> 

>

> 

> It works, but it only seems to be evaluated once every so many

>hours  instead of every time the page is called/invoked.  That is,

>the random  number and date are generated then every subsequent call

>to the page  gives the same random number and date.  Obviously, this

>isn’t what I  want to happen, I would prefer it generate a new

>random number and the  current time every time the page is

>visited/called/invoked/refreshed.   Any ideas?

> 

>

> 

> Greg

> 

 

Reply via email to