Re: position() after match in component

Norman Walsh wrote:
> / Richard Tobin <richard@inf.ed.ac.uk> was heard to say:
> |> However, we want to be able to stream many of our microsteps. On that
> |> basis, I'd be in favor of saying that the context position and context
> |> size are both 1 when the replace expression is evaluated in
> |> p:string-replace (and in analagous situations on other steps).
> |
> | Unless the replace expression is prohibited from accesssing arbitrary
> | nodes, I don't see much advantage to this.  You have to analyse the
> | expression to see if it needs the rest of the document, so you might
> | as well check for calls to position() and size() too.
> |
> |> Both require an unbounded amount of look ahead.
> |
> | As does replace="following-sibling::b"
> 
> Hmm. True. But I think I still prefer position()=last()=1.

Unsurprisingly, I agree with Richard that you may as well give 
position() and last() meaningful values given that you can't guarantee 
streamability anyway. I can quite imagine someone doing:

   <p:string-replace>
     <p:option name="match" value="@id" />
     <p:option name="replace" value="concat('id', position())" />
   </p:string-replace>

I'd expect the position to be the position amongst all matched nodes.

Jeni
-- 
Jeni Tennison
http://www.jenitennison.com

Received on Thursday, 7 June 2007 20:22:52 UTC