There are TWO different error messages happening..
Cannot find file..
The latter simply indicated that Calabash is unable to read the .xpl file itself. The error message mentions a filepath that seems to be lacking directory separators. Perhaps something went wrong with the initial call to Calabash.
This is the error message I get when I missspell the name of the .xpl:
D:\Projecten\Persoonlijk\XProc\stack8>calabash testt.xpl
mei 07, 2013 8:16:57 PM com.xmlcalabash.util.DefaultXProcMessageListener error
SEVERE: err:XD0011:XProc error err:XD0011
mei 07, 2013 8:16:57 PM com.xmlcalabash.drivers.Main error
SEVERE: It is a dynamic error if the resource referenced by a p:document element does not exist, cannot be accessed, or is not a well-formed XML document.
mei 07, 2013 8:16:57 PM com.xmlcalabash.drivers.Main error
SEVERE: Underlying exception: net.sf.saxon.s9api.SaxonApiException: I/O error reported by XML parser processing file:/D:/Projecten/Persoonlijk/XProc/stack8/test
t.xpl: D:\Projecten\Persoonlijk\XProc\stack8\testt.xpl (The system cannot find the file specified)
Source document must be specified
The first message is a bit misguiding though. It sounds like you forgot to bind input to an input port, but that is not the case. It is actually telling you that one of the p:xslt
steps is receiving no input, not even an empty document-node.
I was able to reproduce the error by adding a p:sink
and a p:identity
before any of the p:xslt
steps as shown below:
<p:declare-step name="main" xmlns:p="http://www.w3.org/ns/xproc"
xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
<p:input port="source" primary="true" sequence="true">
<p:document href="temp/a.xml"/>
</p:input>
<p:input port="schema" sequence="true"/>
<p:input port="stylesheet" sequence="true"/>
<p:input port="parameters" sequence="true" kind="parameter"/>
<p:output port="result" sequence="true">
<p:pipe step="pre-run" port="result"/>
<p:pipe step="normalize-stl-xml" port="result"/>
<p:pipe step="tf-transform" port="result"/>
<p:pipe step="transformARDOnline" port="result"/>
<p:pipe step="filterUnusedStyleLayout" port="result"/>
</p:output>
<p:xslt name="pre-run">
<p:input port="stylesheet">
<p:document href="xslt/test.xsl"/>
</p:input>
</p:xslt>
<p:sink/>
<p:identity>
<p:input port="source">
<p:empty/>
</p:input>
</p:identity>
<p:xslt name="normalize-stl-xml">
<p:input port="stylesheet">
<p:document href="xslt/normalize_stl_xml.xsl"/>
</p:input>
</p:xslt>
<p:xslt name="tf-transform">
<p:input port="stylesheet">
<p:document href="xslt/tf_test_transform.xsl"/>
</p:input>
</p:xslt>
<p:xslt name="transformARDOnline">
<p:input port="stylesheet">
<p:document href="xslt/transformARDOnline.xslt"/>
</p:input>
</p:xslt>
<p:xslt name="filterUnusedStyleLayout">
<p:input port="stylesheet">
<p:document href="xslt/filterUnusedStyleLayout.xslt"/>
</p:input>
</p:xslt>
<p:store href="ebu-tt_ard_online.xml" media-type="text/xml"/>
</p:declare-step>
I also added the input declarations as you mentioned in your comments. I did change the source input to primary. Primary inputs and outputs are bound automatically, so you can leave out all input source declarations as you can see from my code above. Same accounts for input of type parameter, which is bound automatically as well. By leaving them out, any command-line parameter is passed to p:xslt
automatically.
Not an exact answer, but hopefully it helps you get closer to the problem. Your code runs fine at my end with both Calabash 0.9.40 and 1.0.9-94, as far as I could tell without the actual input and xslt's.
HTH!