Re: Issue #3306

Hi Erik,

Erik Bruchez wrote:
> Jeni Tennison wrote:
>  > I think there are two separate questions here:
>  >
>  > 1. Can components return as an output the same (unmodified) document
>  > that it receives as input, or must it always copy any documents it
>  > receives? It might be more efficient for implementations if
>  > components like 'filter', 'union' and 'identity' didn't have to
>  > create copies.
> 
> I think this is an implementation detail.
> 
> If not, what is the visible difference between copying and not
> copying?

Well, if you have:

   <p:step name="tee">
     <p:input href="a.xml" />
     <p:output name="out1" label="out1" />
     <p:output name="out2" label="out2" />
   </p:step>

and then you do something along the lines of:

   <p:when test="count($out1 | $out2) = 1">
     ...
   </p:when>

then if out1 and out2 are *copies*, the test will fail (because the 
documents don't have the same identity), whereas if they are 
*references* to the same document then the test will succeed.

I think we should have copy semantics, such that the outputs of 
components must be documents with new document identities. Efficient 
implementations will work out a way of not actually copying entire 
documents when they don't need to.

>  > 2. Can a document sequence contain the same document twice?
> 
> This can only be answered if you answer the following question: what
> is "the same document".

I mean can they have the same identity: in implementation terms, the 
same object in memory.

Cheers,

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

Received on Wednesday, 7 June 2006 10:36:45 UTC