%test:assertXPath help

"Harris, Bernard T. \(GSFC-5870\) via Exist-open" <[email protected]>
Newsgroups gmane.text.xml.exist
Message-ID <[email protected]>
No matter what I do, I cannot get a useful (more than "$result") %:assertXPath to work in this case

xquery version "3.1";

import module namespace inspect="http://exist-db.org/xquery/inspection";
import module namespace test="http://exist-db.org/xquery/xqsuite" 
at "resource:org/exist/xquery/lib/xqsuite/xqsuite.xql";

declare namespace xhtml = "http://www.w3.org/1999/xhtml";

declare
    %test:arg("error", "Bad Request")
    %test:arg("description", "Invalid ResourceID")
    %test:arg("extraHtml")
        %test:assertXPath("$result//*:html")
    (: 
        %test:assertXPath("$result//*:html/*:head[*:title = 'Bad Request']")
        %test:assertXPath("$result/xhtml:html/xhtml:body/xhtml:p[@class = 'ErrorMessage']")
    :)
function local:errorHtml(
    $error as xs:string,
    $description as xs:string,
    $extraHtml as node()?)
as node()
{
    let $result := 
        <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
            <head>
                <title>{$error}</title>
            </head>
            <body>
                <p class='ErrorMessage'><b>Message: </b>{$error}</p>
                <p class='ErrorDescription'><b>Description: </b>{$description}</p>
                {$extraHtml}
            </body>
        </html>
    return
        $result
};

let $f := local:errorHtml#3
return
    test:suite($f)


It always results in 

<testsuites>
    <testsuite package="http://www.w3.org/2005/xquery-local-functions" timestamp="2023-03-14T08:28:16.065-04:00" tests="1" failures="1" errors="0" pending="0" time="PT0.002S">
        <testcase name="errorHtml" class="local:errorHtml">
            <failure message="assertXPath failed." type="failure-error-code-1">$result//*:html</failure>
            <output>
                <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
                    <head>
                        <title>Bad Request</title>
                    </head>
                    <body>
                        <p class="ErrorMessage">
                            <b>Message: </b>Bad Request</p>
                        <p class="ErrorDescription">
                            <b>Description: </b>Invalid ResourceID</p>
                    </body>
                </html>
            </output>
        </testcase>
    </testsuite>
</testsuites>

Or

        <testcase name="errorHtml" class="spasexq:errorHtml">
            <error type="err:XPST0081" message="It is a static error if a QName used in an expression contains a namespace prefix that cannot be expanded into a namespace URI by using the statically known namespaces. Error while evaluating expression: $result//xhtml:html. No namespace defined for prefix xhtml:html"/>
        </testcase>

If I use the xhtml namespace in the assertXPath annotation.  I found someone report a similar problem on stackoverflow in 2016 but it is not clear to me how it was resolved.  This is on exist-db 6.2.0 and Java 11.  Does anyone know what I am doing wrong?  Thanks.

Bernie Harris
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.