Skip to content

Commit 5321352

Browse files
committed
[bugfix] Fix an issue with naming of namespace names from the in-memory DOM
1 parent 6e4fed7 commit 5321352

4 files changed

Lines changed: 50 additions & 17 deletions

File tree

exist-core/src/main/java/org/exist/dom/memtree/AttrImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public NodeId getNodeId() {
7676

7777
@Override
7878
public String getName() {
79-
return getQName().getStringValue();
79+
return getNodeName();
8080
}
8181

8282
@Override

exist-core/src/main/java/org/exist/dom/memtree/NamespaceNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public boolean getSpecified() {
9090

9191
@Override
9292
public String getName() {
93-
return getQName().getStringValue();
93+
return getNodeName();
9494
}
9595

9696
@Override

exist-core/src/main/java/org/exist/dom/memtree/NodeImpl.java

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -161,24 +161,57 @@ public final void setQName(final QName qname) {
161161

162162
@Override
163163
public final String getNodeName() {
164-
return switch (getNodeType()) {
165-
case Node.DOCUMENT_NODE -> "#document";
166-
case Node.DOCUMENT_FRAGMENT_NODE -> "#document-fragment";
167-
case Node.ELEMENT_NODE, Node.ATTRIBUTE_NODE, NAMESPACE_NODE -> getQName().getStringValue();
168-
case Node.PROCESSING_INSTRUCTION_NODE -> ((ProcessingInstructionImpl) this).getTarget();
169-
case Node.TEXT_NODE -> "#text";
170-
case Node.COMMENT_NODE -> "#comment";
171-
case Node.CDATA_SECTION_NODE -> "#cdata-section";
172-
default -> "#unknown";
173-
};
164+
switch(getNodeType()) {
165+
case Node.DOCUMENT_NODE:
166+
return "#document";
167+
168+
case Node.DOCUMENT_FRAGMENT_NODE:
169+
return "#document-fragment";
170+
171+
case Node.ELEMENT_NODE:
172+
case Node.ATTRIBUTE_NODE:
173+
return getQName().getStringValue();
174+
175+
case NAMESPACE_NODE:
176+
if (XMLConstants.XMLNS_ATTRIBUTE.equals(getQName().getPrefix()) && XMLConstants.DEFAULT_NS_PREFIX.equals(getQName().getLocalPart())) {
177+
return XMLConstants.XMLNS_ATTRIBUTE;
178+
} else {
179+
return getQName().getStringValue();
180+
}
181+
182+
case Node.PROCESSING_INSTRUCTION_NODE:
183+
return ((ProcessingInstructionImpl)this).getTarget();
184+
185+
case Node.TEXT_NODE:
186+
return "#text";
187+
188+
case Node.COMMENT_NODE:
189+
return "#comment";
190+
191+
case Node.CDATA_SECTION_NODE:
192+
return "#cdata-section";
193+
194+
default:
195+
return "#unknown";
196+
}
174197
}
175198

176199
@Override
177200
public String getLocalName() {
178-
return switch (getNodeType()) {
179-
case Node.ELEMENT_NODE, Node.ATTRIBUTE_NODE, NAMESPACE_NODE -> getQName().getLocalPart();
180-
default -> null;
181-
};
201+
switch(getNodeType()) {
202+
case Node.ELEMENT_NODE:
203+
case Node.ATTRIBUTE_NODE:
204+
return getQName().getLocalPart();
205+
case NAMESPACE_NODE:
206+
if (XMLConstants.XMLNS_ATTRIBUTE.equals(getQName().getPrefix()) && XMLConstants.DEFAULT_NS_PREFIX.equals(getQName().getLocalPart())) {
207+
return null;
208+
} else {
209+
return getQName().getLocalPart();
210+
}
211+
212+
default:
213+
return null;
214+
}
182215
}
183216

184217
@Override

exist-core/src/test/java/org/exist/dom/memtree/DocumentBuilderReceiverIntegrationTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ public static java.util.Collection<Object[]> data() {
6161
{"merge-docs-ns-1", "<x>{parse-xml(\"<dummy xmlns=''/>\")}</x>", "<x><dummy/></x>"},
6262
{"merge-docs-ns-2", "<x xmlns=''>{parse-xml(\"<dummy xmlns=''/>\")}</x>", "<x><dummy/></x>"},
6363
{"merge-docs-ns-3", "<x xmlns='xyz'>{parse-xml(\"<dummy xmlns=''/>\")}</x>", "<x xmlns='xyz'><dummy xmlns=''/></x>"},
64-
{"merge-docs-ns-3", "<x xmlns=''>{parse-xml(\"<dummy xmlns='xyz'/>\")}</x>", "<x><dummy xmlns='xyz'/></x>"}
64+
{"merge-docs-ns-4", "<x xmlns=''>{parse-xml(\"<dummy xmlns='xyz'/>\")}</x>", "<x><dummy xmlns='xyz'/></x>"}
6565
});
6666
}
6767

0 commit comments

Comments
 (0)