- From: Geert Josten <geert.josten@dayon.nl>
- Date: Mon, 27 May 2013 21:14:24 +0200
- To: Florent Georges <fgeorges@fgeorges.org>, Jostein Austvik Jacobsen <josteinaj@gmail.com>
- Cc: XProc Dev <xproc-dev@w3.org>
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