Skip to content

Commit 0b4ce1e

Browse files
authored
Merge pull request #4818 from joewiz/xqsuite-assertxpath-6xx
[6.x.x] [fix] XQSuite assertXPath annotation: Support default element namespace
2 parents c8fa495 + b58efe4 commit 0b4ce1e

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

exist-core/src/main/resources/org/exist/xquery/lib/xqsuite/examples.xql

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,36 @@ function t:xpath() {
8383
<item>
8484
<name>Item1</name>
8585
</item>
86-
};
86+
};
87+
88+
declare
89+
%test:arg("error", "Bad Request")
90+
%test:assertXPath("$result/self::html")
91+
%test:assertXPath("$result/head[title = 'Bad Request']")
92+
%test:assertXPath("$result/body/p[@class = 'ErrorMessage']")
93+
%test:assertXPath("/self::html")
94+
%test:assertXPath("/head[title = 'Bad Request']")
95+
%test:assertXPath("/body/p[@class = 'ErrorMessage']")
96+
function local:default-element-namespace(
97+
$error as xs:string
98+
) as node() {
99+
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
100+
<head>
101+
<title>{$error}</title>
102+
</head>
103+
<body>
104+
<p class='ErrorMessage'><b>Message: </b>{$error}</p>
105+
</body>
106+
</html>
107+
};
108+
109+
declare
110+
%test:assertXPath("/self::x")
111+
%test:assertXPath("exists($result/*:y)")
112+
%test:assertXPath("not($result/y)")
113+
%test:assertXPath("$result/Q{bar}y")
114+
function local:multiple-default-element-namespaces() as node() {
115+
<x xmlns="foo">
116+
<y xmlns="bar"/>
117+
</x>
118+
};

exist-core/src/main/resources/org/exist/xquery/lib/xqsuite/xqsuite.xql

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ declare %private function test:assertXPath($annotation as element(annotation), $
860860
function ($namespaces as map(*), $xml as element()) {
861861
map:merge(($namespaces,
862862
for $prefix in in-scope-prefixes($xml)
863-
where $prefix != "" and $prefix != "xml"
863+
where $prefix ne "xml"
864864
return
865865
map:entry($prefix, namespace-uri-for-prefix($prefix, $xml))
866866
))
@@ -870,7 +870,10 @@ declare %private function test:assertXPath($annotation as element(annotation), $
870870
string-join(
871871
for $prefix in map:keys($namespaces)
872872
return
873-
"declare namespace " || $prefix || "='" || $namespaces($prefix) || "';",
873+
if ($prefix eq "") then
874+
"declare default element namespace '" || $namespaces($prefix) || "';"
875+
else
876+
"declare namespace " || $prefix || "='" || $namespaces($prefix) || "';",
874877
" "
875878
)
876879
else

0 commit comments

Comments
 (0)