mmidy 00/10/03 13:12:32
Modified: java/src/org/apache/xalan/transformer ResultTreeHandler.java
Log:
Fix namespace processing. Make sure parents are processed first and that an
element's namespace is ouput.
Revision Changes Path
1.15 +34 -22
xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java
Index: ResultTreeHandler.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/ResultTreeHandler.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- ResultTreeHandler.java 2000/10/03 19:39:29 1.14
+++ ResultTreeHandler.java 2000/10/03 20:12:31 1.15
@@ -472,6 +472,12 @@
m_nsSupport.pushContext();
setPendingElementName (ns, localName, name);
m_haveDocContent = true;
+ if (ns != null && ns.length() > 0)
+ {
+ int index;
+ String prefix = (index = name.indexOf(":"))< 0 ? "" :
name.substring(0, index);
+ startPrefixMapping ( prefix, ns);
+ }
}
/**
@@ -489,6 +495,12 @@
m_pendingAttributes.addAttributes(atts);
setPendingElementName (ns, localName, name);
m_haveDocContent = true;
+ if (ns != null && ns.length() > 0)
+ {
+ int index;
+ String prefix = (index = name.indexOf(":"))< 0 ? "" :
name.substring(0, index);
+ startPrefixMapping ( prefix, ns);
+ }
}
/**
@@ -856,7 +868,7 @@
String name;
if(isDefault)
{
- prefix = "xml";
+ //prefix = "xml";
name = "xmlns";
}
else
@@ -882,33 +894,33 @@
int type;
// Vector nameValues = null;
// Vector alreadyProcessedPrefixes = null;
- Node parent = src;
- while (parent != null
- && ((type = parent.getNodeType()) == Node.ELEMENT_NODE
- || (type == Node.ENTITY_REFERENCE_NODE)))
- {
- if (type == Node.ELEMENT_NODE)
+ Node parent;
+ if(((type = src.getNodeType()) == Node.ELEMENT_NODE
+ || (type == Node.ENTITY_REFERENCE_NODE))
+ && (parent = src.getParentNode()) != null)
+ {
+ processNSDecls(parent);
+ }
+ if (type == Node.ELEMENT_NODE)
+ {
+ NamedNodeMap nnm = src.getAttributes();
+ int nAttrs = nnm.getLength();
+ for (int i = 0; i < nAttrs; i++)
{
- NamedNodeMap nnm = parent.getAttributes();
- int nAttrs = nnm.getLength();
- for (int i = 0; i < nAttrs; i++)
+ Node attr = nnm.item(i);
+ String aname = attr.getNodeName();
+ if (QName.isXMLNSDecl(aname))
{
- Node attr = nnm.item(i);
- String aname = attr.getNodeName();
- if (QName.isXMLNSDecl(aname))
+ String prefix = QName.getPrefixFromXMLNSDecl(aname);
+ String desturi = getURI(prefix);
+ String srcURI = attr.getNodeValue();
+ if(!srcURI.equalsIgnoreCase(desturi))
{
- String prefix = QName.getPrefixFromXMLNSDecl(aname);
- String desturi = getURI(prefix);
- String srcURI = attr.getNodeValue();
- if(!srcURI.equalsIgnoreCase(desturi))
- {
- this.startPrefixMapping(prefix, srcURI);
- }
+ this.startPrefixMapping(prefix, srcURI);
}
}
}
- parent = parent.getParentNode();
- }
+ }
}
/**