- From: James Sulak <jsulak@gmail.com>
- Date: Sun, 30 May 2010 16:30:33 -0500
- To: Nic Gibson <nicg@corbas.net>
- Cc: xproc-dev@w3.org
Hi Nic,
The mistake you made is an easy one to make, even for experienced
xprocers. When you use p:with-option, the processor interprets the
contents of the @select attribute as an xpath expression, and tries to
evaluate it against the current context. So, since you are intending
the contents of @select to be a string and not an xpath expression,
you should place them in additional quotes to make the expression a
string literal:
<p:rename name='new-identifiers'
xmlns:corbas="http://www.corbas.net/ns/functions">
<p:with-option name="match" select="'@corbas:id'"/>
<p:with-option name="new-name" select="'xml:id'"/>
</p:rename>
Alternatively, you could could use the shortcut form and declare the
match and new-name options as attributes directly on p:rename:
<p:rename name='new-identifiers'
xmlns:corbas="http://www.corbas.net/ns/functions" match="@corbas:id"
new-name="xml:id" />
In this case, you don't need the double quotes, since the contents of
those attributes are already interpreted as strings.
HTH,
-James
On Sun, May 30, 2010 at 4:00 PM, Nic Gibson <nicg@corbas.net> wrote:
> Evening folks
>
> I'm obviously doing something wrong here but I'm also obviously failing to see what. Could anyone point me in the right direction? I have the following xproc script (actually, the final stage of a much longer script but it exhibits the problem).
>
> <?xml version="1.0" encoding="UTF-8"?>
> <p:declare-step xmlns:p="http://www.w3.org/ns/xproc" version="1.0"
> xmlns:c="http://www.w3.org/ns/xproc-step"
> name="reset-identifiers">
> <p:input port="source"/>
>
> <p:output port="result">
> <p:pipe port="result" step="done"/>
> </p:output>
>
> <p:rename name='new-identifiers' xmlns:corbas="http://www.corbas.net/ns/functions">
> <p:with-option name="match" select='@corbas:id'/>
> <p:with-option name="new-name" select='xml:id'/>
> </p:rename>
>
> <p:identity name='done'/>
>
> </p:declare-step>
>
> I have the following xml doc that I'm feeding into the above (again stripped down to the minimum):
>
> <book xmlns="http://docbook.org/ns/docbook"
> xmlns:xlink="http://www.w3.org/1999/xlink"
> xmlns:corbas="http://www.corbas.net/ns/functions"
> version="5.0" corbas:id="ba-9781849662505">
> </book>
>
> calabash dies with the following exception:
>
> nicg@newt:~/Dropbox/Bloomsbury/FinalXMLFilesComplete/% java -cp '/usr/local/share/java/calabash.jar:/usr/local/share/java/saxon9he.jar' com.xmlcalabash.drivers.Main --input source=test.xml --output result=test1xml reset-ids.xpl
> May 30, 2010 9:38:53 PM com.xmlcalabash.util.DefaultXProcMessageListener info
> INFO: Running pipeline reset-identifiers
> May 30, 2010 9:38:53 PM com.xmlcalabash.util.DefaultXProcMessageListener error
> SEVERE: XD0045:XProc error err:XD0045
> May 30, 2010 9:38:53 PM com.xmlcalabash.drivers.Main error
> SEVERE: Unknown error
> May 30, 2010 9:38:53 PM com.xmlcalabash.drivers.Main error
> SEVERE: Underlying exception: java.lang.IllegalArgumentException: net.sf.saxon.trans.XPathException: Invalid QName {}
>
>
> Ermmm. Help?
>
> cheers
>
> nic
>
> --
> Nic Gibson
> Director, Corbas Consulting Ltd
> Editorial and Technical Consultancy and Training
> http://www.corbas.co.uk, +44 (0)7718 906817
>
>
>
>
>
>
Received on Sunday, 30 May 2010 21:31:26 UTC