RE: err:XD0008 (more than one document in context) when not referring to the context

Hi Florent,

I'm not entirely convinced why one couldn't evaluate your example against
multiple docs/nodes. It is just a matter of being clear what will happen,
and trying to make it as intuitive as possible.

I recall having had a similar issue with parameters. If you use Calabash,
and connect multiple parameter sources to a child step, then it doesn't
merge them, but provides them as-is. If you use that as source for a
variable, to single out one parameter, you get the same error. But all you
wanted to know, whether there was one param element of some name with a
value 'true'. Why can't you just use a //mypath-to-param on multiple input
docs in one blow? That doesn't feel odd to me at all..

Cheers,
Geert

> -----Oorspronkelijk bericht-----
> Van: fgeorges@gmail.com [mailto:fgeorges@gmail.com] Namens Florent
> Georges
> Verzonden: maandag 27 mei 2013 20:51
> Aan: Jostein Austvik Jacobsen
> CC: XProc Dev
> Onderwerp: Re: err:XD0008 (more than one document in context) when not
> referring to the context
>
>   Hi,
>
>   Makes a lot of sense to me as a user.  The difficult bit here is
> probably to define what means "using the context".  What about the
> following XPath expression?:
>
>     if ( false() ) then string(.) else 'xxx'
>
>   This would require static analysis to detect the usage of the
> context, even though I expect must of the processors to reduce it to
> simply 'xxx' after optimization.  As XD0008 is already a dynamic
> error, it makes sense to me to change the following sentence at the
> end of "§5.7.3 p:with-option":
>
>     It is a dynamic error (err:XD0008) if a sequence of more than one
>     document appears on the connection for a p:with-option.
>
> by something like the following:
>
>     It is a dynamic error (err:XD0008) if evaluating the select
>     expression of the p:with-option ever refers to the context node,
>     size, or position, and if a sequence of more than one document
>     appears on the connection for the same p:with-option.
>
>   By the way, the XProc spec contains the phrase "context node, size,
> or position" in several places, even though those 3 components of the
> dynamic context are the exact definition of the "focus" (yeah, indeed,
> only starting in XPath 2.0).
>
>   Regards,
>
> --
> Florent Georges
> http://fgeorges.org/
> http://h2oconsulting.be/
>
>
> On 27 May 2013 14:34, Jostein Austvik Jacobsen wrote:
> > In XProc vNext; could it be allowed to have more than one document in
> the
> > context of a p:with-option, p:with-param and p:variable as long as you
> don't
> > refer to the context?
> >
> > I have a step with this signature:
> >
> > <p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
> > xmlns:pxi="http://www.daisy.org/ns/pipeline/xproc/internal"
> > type="pxi:daisy202-to-epub3-content" version="1.0">
> >     <p:input port="content-flow" primary="true" sequence="true"/>
> >     <p:input port="resolve-links-mapping"/>
> >     <p:input port="ncc-navigation"/>
> >     <p:output port="content" sequence="true" primary="true"/>
> >     <p:output port="fileset" primary="false"/>
> >
> >     <p:option name="publication-dir" required="true"/>
> >     <p:option name="content-dir" required="true"/>
> >     <p:option name="daisy-dir" required="true"/>
> > </p:declare-step>
> >
> > As you see, the primary input is a sequence. So when I call it, I have
to
> > do:
> >
> > <pxi:daisy202-to-epub3-content>
> >     <p:with-option name="publication-dir" select="$publication-dir">
> >         <p:empty/>
> >     </p:with-option>
> >     <p:with-option name="content-dir" select="$content-dir">
> >         <p:empty/>
> >     </p:with-option>
> >     <p:with-option name="daisy-dir" select="$daisy-dir">
> >         <p:empty/>
> >     </p:with-option>
> > </pxi:daisy202-to-epub3-content>
> >
> > As a script author I would expect that as long as I don't refer to the
> > context in a select expression, it wouldn't matter what is in the
context.
> > (I didn't realize this until I encountered an input fileset resulting
in
> > that multiple documents appeared on the steps input port, which means
> this
> > has been a bug in my script for a long time.)
> >
> > This should have been sufficient:
> >
> > <pxi:daisy202-to-epub3-content>
> >     <p:with-option name="publication-dir" select="$publication-dir"/>
> >     <p:with-option name="content-dir" select="$content-dir"/>
> >     <p:with-option name="daisy-dir" select="$daisy-dir"/>
> > </pxi:daisy202-to-epub3-content>
> >
> > I find it strange that if there is no documents in the context it is
only an
> > error if you try to refer to the context, while if there is multiple
> > documents in the context it is an error even if you don't refer to the
> > context.
> >
> > What do you think?
> >
> > Jostein

Received on Monday, 27 May 2013 19:14:57 UTC