You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by el...@apache.org on 2003/01/29 21:04:18 UTC
cvs commit: xml-xerces/java/src/org/apache/xerces/dom AttributeMap.java
elena 2003/01/29 12:04:17
Modified: java/src/org/apache/xerces/dom AttributeMap.java
Log:
while adding default attribute from the DTD back (after removal) we must also
copy a namespace from the attribute we are trying to remove.
Revision Changes Path
1.24 +19 -14 xml-xerces/java/src/org/apache/xerces/dom/AttributeMap.java
Index: AttributeMap.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/dom/AttributeMap.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- AttributeMap.java 29 Aug 2002 18:34:58 -0000 1.23
+++ AttributeMap.java 29 Jan 2003 20:04:17 -0000 1.24
@@ -334,23 +334,30 @@
if (hasDefaults() && addDefault) {
// If there's a default, add it instead
-
NamedNodeMapImpl defaults =
((ElementImpl) ownerNode).getDefaultAttributes();
+
Node d;
if (defaults != null &&
(d = defaults.getNamedItem(name)) != null &&
findNamePoint(name, index+1) < 0) {
-
- NodeImpl clone = (NodeImpl)d.cloneNode(true);
- clone.ownerNode = ownerNode;
- clone.isOwned(true);
- clone.isSpecified(false);
- nodes.setElementAt(clone, index);
- if (attr.isIdAttribute()) {
- ownerDocument.putIdentifier(clone.getNodeValue(),
+ NodeImpl clone = (NodeImpl)d.cloneNode(true);
+ if (d.getLocalName() !=null){
+ // we must rely on the name to find a default attribute
+ // ("test:attr"), but while copying it from the DOCTYPE
+ // we should not loose namespace URI that was assigned
+ // to the attribute in the instance document.
+ ((AttrNSImpl)clone).namespaceURI = attr.getNamespaceURI();
+ }
+ clone.ownerNode = ownerNode;
+ clone.isOwned(true);
+ clone.isSpecified(false);
+
+ nodes.setElementAt(clone, index);
+ if (attr.isIdAttribute()) {
+ ownerDocument.putIdentifier(clone.getNodeValue(),
(ElementImpl)ownerNode);
- }
+ }
} else {
nodes.removeElementAt(index);
}
@@ -444,9 +451,7 @@
if (j>=0 && findNamePoint(nodeName, j+1) < 0) {
NodeImpl clone = (NodeImpl)d.cloneNode(true);
clone.ownerNode = ownerNode;
- // REVISIT: can we assume that if we reach here it is
- // always attrNSImpl
- if (clone instanceof AttrNSImpl) {
+ if (d.getLocalName() != null) {
// we must rely on the name to find a default attribute
// ("test:attr"), but while copying it from the DOCTYPE
// we should not loose namespace URI that was assigned
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org