- From: Norman Walsh <ndw@nwalsh.com>
- Date: Fri, 15 May 2009 07:55:11 -0400
- To: XProc Dev <xproc-dev@w3.org>
- Message-ID: <m28wkyk2cg.fsf@nwalsh.com>
"Henry S. Thompson" <ht@inf.ed.ac.uk> writes:
> Norman Walsh writes:
>
>> What about this one?
>>
>> <p:pipeline xmlns:p="http://www.w3.org/ns/xproc">
>> <p:option name="notBound"/>
>> <p:option name="notUsed" select="$notBound"/>
>> <p:identity/>
>> </p:pipeline>
>
> Hmm. The spec says [1]
>
> "The select expression is only evaluated when its actual value is
> needed by an instance of the step type being declared."
>
> That puts a pretty substantial burden on an implementation! Did we
> really mean to say that???!!!!
No, I don't think so. That paragraph is supposed to tell you that the
select expressions aren't evaluated when the declaration is
encountered, they're evaluated when a step of that type is used.
So, if you had a library that contained:
<p:declare-step type="my:extension">
<p:option name="random" select="java:random()"/>
</p:declare-step>
and a pipeline that contained:
<my:extension/>
<my:extension/>
you would not expect each call to my:extension to receive the same
value for the random option (http://twitter.com/codinghorror/status/1803680004
notwithstanding), one computed when the processor read the
declaration.
So I think our spec says explicitly that no error arises if you place
this p:pipeline example in a p:library and import that library.
I'm not sure it contains an explicit answer to the question at hand.
> But given it says that, the answer to
> your question is "no, no error, since the 'notUsed' option is never
> needed by any instance of the step".
>
> Our gun, our foot, our bullet :-(.
I assert that if we had meant to require implementors to handle this
case, we would not have forbidden forward references in variable
declarations. But I've been wrong before.
I think (in addition to clarifying the paragraph that bot you and
Vojtech quoted), we should say either that the $notUsed expression
MUST or MAY produce an error. In the interest of interoperability and
simplicity, I favor MUST, but I'm not going to lie down in the road
about it.
The other interoperable answer is MUST NOT, but that seems to place a
pretty significant burden on implementors for a very small benefit to
pipeline authors.
Be seeing you,
norm
--
Norman Walsh <ndw@nwalsh.com> | Man's sensitivity to little things and
http://nwalsh.com/ | insensitivity to the greatest are the
| signs of a strange disorder.-- Pascal
Received on Friday, 15 May 2009 11:55:54 UTC