- From: David Cramer <david@thingbag.net>
- Date: Mon, 18 May 2020 15:53:39 -0500
- To: xproc-dev@w3.org
Hi Robert,
I'm only an amateur xproctologist myself. Perhaps an actual expert will
chime in with better advice, but here are my thoughts:
I never had any luck getting the calabash ant task to work. When I
invoke calabash from ant, I just use the <java> task. Since I've never
used the calabash task, I don't know how it is designed to work when
given a set of files. Will it really run each one through the pipeline?
Does your code work if there is only one file in that directory? Like I
said, I've never gotten that task to work so I can't say.
If I were doing this, I would put everything in XProc. In this case, I
might use the xpath collection() function inside the pipeline to find
all the files in the target directory, then use p:for-each with
p:iteration-source to loop over the result and operate on each file,
using p:store to store the result. In this case, the input and output of
the pipeline would be irrelevant. If you use Ant at all, it would just
be as a wrapper from which to call Calabash.
Regards,
David
On 5/15/20 5:02 PM, Robert Stuart wrote:
> My final goal is to process many Docbook instances and produce the FO using the Docbook XSL 2 Stylesheets. My simple stepping stone that does not work was to run the identity Xproc step on multiple files.
> It appears to run until right after it hits the last file in the first directory child of examples. I get output files to out corresponding to the input files. BUT I then get the following error and it chokes. If some kind soul would point me in the right direction I would really appreciate it. If for some reason extending this simple yet not yet working example to the pipeline docbook-xslt2-2.6.0/xslt/base/pipelines/db2fo.xpl will not work for some reason help there would be appreciated.
>
> Environment info:
> xmlcalabash-1.2.1-99.jar
> OS X 10.14.6
> java Corretto-8.232.09.2
> saxon SaxonHE9-9-1-7J
>
>
> build.xml:58: com.xmlcalabash.core.XProcException: Duplicate output binding for default output port.
> at com.xmlcalabash.util.UserArgs.addOutput(UserArgs.java:271)
> at com.xmlcalabash.drivers.CalabashTask.process(CalabashTask.java:1285)
> at com.xmlcalabash.drivers.CalabashTask.execute(CalabashTask.java:1201)
> at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.lang.reflect.Method.invoke(Method.java:498)
> at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99)
> at org.apache.tools.ant.Task.perform(Task.java:350)
> at org.apache.tools.ant.Target.execute(Target.java:449)
> at org.apache.tools.ant.Target.performTasks(Target.java:470)
> at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1388)
> at org.apache.tools.ant.Project.executeTarget(Project.java:1361)
> at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
> at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
> at org.apache.tools.ant.Main.runBuild(Main.java:834)
> at org.apache.tools.ant.Main.startAnt(Main.java:223)
> at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284)
> at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101)
>
> Total time: 11 seconds
>
> <?xml version="1.0" encoding="UTF-8"?>
> <p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
> xmlns:c="http://www.w3.org/ns/xproc-step" version="1.0">
> <p:input port="source"/>
> <p:output port="result"/>
> <p:identity/>
> </p:declare-step>
>
> Using an ant task
>
> <target name="test2Calabash">
> <calabash includes="**/*.xml"
> basedir="${examples.dir}/"
> destdir="${generatedReports.dir}/out">
> <pipeline>
> <file file="${basedir}/XPROC/identity.xpl" />
> </pipeline>
> </calabash>
> </target>
>
> Note for ant I did end up having to add a taskdef since only adding typedef didn’t seem to do it for me.
>
> <taskdef resource="com/xmlcalabash/antlib.xml">
> <classpath>
> <pathelement location="${deps.static}/xmlcalabash-1.2.1-99/xmlcalabash-1.2.1-99.jar"/>
> </classpath>
> </taskdef>
>
Received on Monday, 18 May 2020 20:53:59 UTC