Strange behavior involving (p:)resolve-uri, variables, attributes, calabash, oxygen, saxon, ...

I'm getting the error "Internal Saxon error: local variable encountered
whose binding has been deleted" in my pipeline, and have reduced the
problem into this pipeline (which I run using oXygen):

<?xml version="1.0" encoding="UTF-8"?>
<p:declare-step version="1.0" xmlns:p="http://www.w3.org/ns/xproc" xmlns:c="
http://www.w3.org/ns/xproc-step">

    <p:variable name="src" select="'http://example.net/img.jpg'"/>

    <!-- This fails. -->
    <p:variable name="test1" select="//*[p:resolve-uri(@href,/*/@xml:base)
= $src]/@xml:base">
        <p:inline>
            <c:file xml:base="http://example.net/img.jpg" href="img.jpg"/>
        </p:inline>
    </p:variable>

    <!-- This is ok. -->
    <p:variable name="test2" select="//*[resolve-uri(@href,/*/@xml:base) =
$src]/@xml:base">
        <p:inline>
            <c:file xml:base="http://example.net/img.jpg" href="img.jpg"/>
        </p:inline>
    </p:variable>

    <!-- This is ok. -->
    <p:variable name="test3" select="//*[p:resolve-uri(@href,'
http://example.net/img.jpg') = $src]/@xml:base">
        <p:inline>
            <c:file xml:base="http://example.net/img.jpg" href="img.jpg"/>
        </p:inline>
    </p:variable>

    <!-- This is ok. -->
    <p:variable name="test4" select="//*[p:resolve-uri(@href,/*/@xml:base)
= 'img.jpg']/@xml:base">
        <p:inline>
            <c:file xml:base="http://example.net/img.jpg" href="img.jpg"/>
        </p:inline>
    </p:variable>

    <p:sink>
        <p:input port="source">
            <p:empty/>
        </p:input>
    </p:sink>

</p:declare-step>


I've updated to the newest version of oXygen (XML Editor 13.1, build
2011112512), and tried replacing the included 0.9.37 version of
calabash.jar with the new 0.9.41 version to no avail. There's no error when
running vanilla calabash from the command line though (unless it's
invisible or something).

I've had some strange behavior with resolve-uri vs p:resolve-uri before
(but haven't bothered debugging it), so I'm normally sticking to always
using p:resolve-uri. In this case however, using resolve-uri works (test2),
while p:resolve-uri doesn't (test1). Removing the variable reference
(test4) or the /*/@xml:base reference (test3) from the XPath expression
also works though.

Is this a bug or am I missing something? If it's a bug, can anyone
reproduce it with Calabash, or is it an oXygen bug?

Regards
Jostein

Received on Wednesday, 7 December 2011 19:07:41 UTC