- From: Kevin Flynn <kevin@escenic.com>
- Date: Wed, 5 Aug 2009 12:50:21 +0200
- To: "xproc-dev@w3.org" <xproc-dev@w3.org>
Hi,
Can anybody explain the following to me:
I have a library containing the following pointless pipeline:
<p:declare-step type="eb:copy">
<p:input port="source"/>
<p:output port="result"/>
<p:identity/>
</p:declare-step>
And a similarly pointless pipeline in another file that uses it to copy
all the XML files in one folder to another folder:
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
xmlns:eb="http://some/id"
xmlns:c="http://www.w3.org/ns/xproc-step"
name="copy-all">
<p:input port="source">
<p:empty/>
</p:input>
<p:output port="result">
<p:pipe step="finished" port="result"/>
</p:output>
<p:import href="my-library.xpl" />
<p:variable name="source-folder" select="'/some/source/folder'"/>
<p:variable name="source-format" select="'xml'"/>
<p:variable name="output-folder" select="'out'"/>
<p:directory-list>
<p:with-option name="include-filter"
select="concat('.*\.',$source-format)"/>
<p:with-option name="path" select="$source-folder"/>
</p:directory-list>
<p:filter select="//c:file"/>
<p:for-each>
<p:variable name="current-file-stem"
select="substring-before(/c:file/@name,'.')"/>
<p:load>
<p:with-option name="href"
select="concat($source-folder,'/',$current-file-stem,'.',$source-format)"/>
</p:load>
<eb:copy/>
<p:store name="store">
<p:with-option name="href"
select="concat($output-folder,'/',$current-file-stem,'-copy.xml')"/>
</p:store>
</p:for-each>
<p:identity name="finished">
<p:input port="source">
<p:inline>
<p>Copy completed</p>
</p:inline>
</p:input>
</p:identity>
</p:declare-step>
which works as expected: all the .xml files in /some/source/folder get
copied to out and have '-copy' appended to their names.
However, if I add a parameter port to the eb:copy pipeline as follows:
<p:declare-step type="eb:copy">
<p:input port="source"/>
<p:input port="parameters" kind="parameter"/>
<p:output port="result"/>
<p:identity/>
</p:declare-step>
and supply it with some input in my main pipeline:
<eb:copy>
<p:input port="parameters">
<p:inline>
<c:data content-type="text/plain">foo</c:data>
</p:inline>
</p:input>
</eb:copy>
Then only the first .xml file in the source folder is processed, and the
pipeline fails with the following message:
Error : Pipeline failed: err:XS0035: null It is a static error if the
declaration of a parameter input port contains a binding; parameter
input port declarations must be empty.
Am I misunderstanding something, or is this a bug in Calabash (0.9.14)?
Hope someone can help!
Kevin Flynn
PS The eb:copy step is, of course, just a placeholder for "real" steps
that do interesting stuff and actually need parameters...
Received on Wednesday, 5 August 2009 10:51:04 UTC