- From: Stefanie Haupt <st.haupt@gmail.com>
- Date: Mon, 30 Nov 2009 19:35:39 +0100
- To: xproc-dev@w3.org
Hi list,
I'm using xproc to loop over a directory with various file types from
which I only want to process the html files into a pipeline to tidy them
up in a first step. The thing is, I don't know how to address them with
p:data while being in the loop. There's no problem in running tidy for a
single file where there is an absolute path given in p:data.
What I'm using: Calabash 0.9.15 from within Oxygen 11, nothing changed
from the start.
This would be a typical directory:
Directory
file1.htm
file2.htm
someotherfile.htm
picture.jpg
anotherpicture.jpg
This is my xproc (further below are some error-messages posted):
<p:declare-step xmlns:p="http://www.w3.org/ns/xproc"
xmlns:c="http://www.w3.org/ns/xproc-step"
xmlns:cx="http://xmlcalabash.com/ns/extensions" name="myPipeline">
<p:input port="source" sequence="true"/>
<p:output port="result" sequence="true">
<p:pipe port="result" step="fileloop"/>
</p:output>
<!-- declare path -->
<p:variable name="path"
select="'file:///home/stefanie/Magisterarbeit/quellcode/xproc/mini-test-db/gba/80tage'">
<p:empty/>
</p:variable>
<!-- list directory -->
<p:directory-list name="directories">
<p:with-option name="path" select="$path">
<p:empty/>
</p:with-option>
</p:directory-list>
<!-- show complete path -->
<p:make-absolute-uris match="c:file/@name" name="uri">
<p:with-option name="base-uri"
select="p:resolve-uri(concat($path, '/',
c:file/@name))"/>
</p:make-absolute-uris>
<!-- excluding other filetypes works great -->
<p:filter select="//c:file[matches(@name, 'htm')]"
name="filter"/>
<!-- loop over files and do some magic html tidy. The only problem
is: I can't get the files to
tidy because I'm probably doing something wrong on p:data -->
<p:for-each name="fileloop">
<p:output port="result" sequence="true"/>
<p:variable name="file" select="p:resolve-uri(concat($path, '/',
c:file/@name))"/>
<p:identity>
<p:input port="source">
<!-- <p:data href="file:///$file"/>-->
<!-- <p:data href="file:///c:directory/c:file/@name"/>-->
<!-- <p:data href="concat($path,'/',c:file/@name)"
content-type="string"/>-->
<!-- <p:data
href="p:resolve-uri(concat($path,'/',c:file/@name))"/> -->
<!-- <p:data
href="file:///p:resolve-uri(concat($path,'/',c:file/@name))"/>-->
<!-- <p:data href="file://$file"/>-->
<!-- <p:data href="file:///c:file/@name"/>-->
</p:input>
</p:identity>
<p:exec command="/usr/bin/tidy"
source-is-xml="false"
result-is-xml="true"
wrap-result-lines="false">
<p:with-option name="args" select="'--quiet yes
--show-warnings no --doctype omit --numeric-entities yes --output-xml
yes'"/>
</p:exec>
<p:unwrap match="c:result"/>
<p:identity/>
</p:for-each>
</p:declare-step>
As you can see I tried some things to get some input to p:data but all
without success.
This would be a typical error message for some attempt using file:/// in
combination with a variable:
E [Calabash XProc] XD0029 : XProc error err:XD0029 It is a dynamic error
if the document referenced by a p:data element does not exist, cannot be
accessed, or cannot be encoded as specified. /$file (No such file or
directory)
The same error is thrown with file:///c:file/@name:
E [Calabash XProc] XD0029 : XProc error err:XD0029 It is a dynamic error
if the document referenced by a p:data element does not exist, cannot be
accessed, or cannot be encoded as specified. /c:file/@name (No such file
or directory)
An attempt using p:resolve-uri without file protocol:
E [Calabash XProc] XD0029 : XProc error err:XD0029 It is a dynamic error
if the document referenced by a p:data element does not exist, cannot be
accessed, or cannot be encoded as specified. unknown protocol: p
The same attempt using p:resolve-uri with file protocol:
E [Calabash XProc] XD0029 : XProc error err:XD0029 It is a dynamic error
if the document referenced by a p:data element does not exist, cannot be
accessed, or cannot be encoded as
specified. /p:resolve-uri(concat($path,'/',c:file/@name)) (No such file
or directory)
The 'best' result brings the attempt starting with concat because it
contains the the working directory (at least):
E [Calabash XProc] XD0029 : XProc error err:XD0029 It is a dynamic error
if the document referenced by a p:data element does not exist, cannot be
accessed, or cannot be encoded as
specified. /home/stefanie/Magisterarbeit/quellcode/xproc/concat($path,'/',c:file/@name) (No such file or directory)
I hope this is enough information to help, I really don't know where I'm
going wrong. Please let me know if you need further information. Many
thanks,
Stefanie
--
Stefanie Haupt
Received on Tuesday, 1 December 2009 08:31:45 UTC