Skip to content

Commit 0cec935

Browse files
add check for xml-prefixed name to DB wildcard nametests (fixes #2642) (#2647)
1 parent dc0b21c commit 0cec935

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

basex-core/src/main/java/org/basex/query/expr/path/NameTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.basex.query.expr.path;
22

3+
import org.basex.index.name.*;
34
import org.basex.data.*;
45
import org.basex.query.*;
56
import org.basex.query.value.item.*;
@@ -103,9 +104,9 @@ public Test optimize(final Kind kn, final Data data) {
103104
}
104105

105106
// check if local element/attribute names occur in database
106-
if(!kind.oneOf(Kind.GNODE, Kind.PROCESSING_INSTRUCTION) && name != null &&
107-
!(kind == Kind.ELEMENT ? data.elemNames : data.attrNames).contains(name)) {
108-
return null;
107+
if(!kind.oneOf(Kind.GNODE, Kind.PROCESSING_INSTRUCTION) && name != null) {
108+
final Names names = kind == Kind.ELEMENT ? data.elemNames : data.attrNames;
109+
if(!names.contains(name) && !names.contains(Token.concat(Token.XML, ':', name))) return null;
109110
}
110111
return this;
111112
}

basex-core/src/test/java/org/basex/query/NamespaceTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -896,6 +896,15 @@ public void copyPreserveNoInheritPersistent() {
896896
query("db:get('db')/*:B", "<b:B xmlns:b=\"b\"/>");
897897
}
898898

899+
/** Wildcard name test with xml namespace on database content (GH-2642). */
900+
@Test public void gh2642() {
901+
final String doc = "<x xml:a=''><xml:a/></x>";
902+
execute(new CreateDB("db", doc));
903+
query("/x[@xml:a]", doc);
904+
query("/x[@*:a]", doc);
905+
query("/x[*:a]", doc);
906+
}
907+
899908
/** Tests fixed default element namespaces. */
900909
@Test public void fixed() {
901910
// non-fixed: constructor xmlns="" changes the default namespace seen by enclosed expressions

0 commit comments

Comments
 (0)