Index: org/jdom/output/DOMOutputter.java =================================================================== RCS file: /home/cvspublic/jdom/src/java/org/jdom/output/DOMOutputter.java,v retrieving revision 1.41 diff -u -r1.41 DOMOutputter.java --- org/jdom/output/DOMOutputter.java 3 Sep 2004 06:03:42 -0000 1.41 +++ org/jdom/output/DOMOutputter.java 23 May 2006 09:29:30 -0000 @@ -86,6 +86,8 @@ /** Adapter to use for interfacing with the DOM implementation */ private String adapterClass; + + private boolean forceNamespaceAware; /** * This creates a new DOMOutputter which will attempt to first locate @@ -106,6 +108,15 @@ public DOMOutputter(String adapterClass) { this.adapterClass = adapterClass; } + + /** + * Controls how NO_NAMESPACE nodes are handeled. If true the outputter always creates + * namespace a aware DOM. + * @param flag + */ + public void setForceNamespaceAware(boolean flag) { + this.forceNamespaceAware = flag; + } /** @@ -250,7 +261,9 @@ org.w3c.dom.Element domElement = null; if (element.getNamespace() == Namespace.NO_NAMESPACE) { // No namespace, use createElement - domElement = domDoc.createElement(element.getQualifiedName()); + domElement = forceNamespaceAware ? + domDoc.createElementNS(null, element.getQualifiedName()) + : domDoc.createElement(element.getQualifiedName()); } else { domElement = domDoc.createElementNS( @@ -308,8 +321,14 @@ // Crimson doesn't like setAttributeNS() for non-NS attribs if (attribute.getNamespace() == Namespace.NO_NAMESPACE) { // No namespace, use setAttribute - domElement.setAttribute(attribute.getQualifiedName(), - attribute.getValue()); + if (forceNamespaceAware) { + domElement.setAttributeNS(null, + attribute.getQualifiedName(), + attribute.getValue()); + } else { + domElement.setAttribute(attribute.getQualifiedName(), + attribute.getValue()); + } } else { domElement.setAttributeNS(attribute.getNamespaceURI(), @@ -392,7 +411,11 @@ try { if (attribute.getNamespace() == Namespace.NO_NAMESPACE) { // No namespace, use createAttribute - domAttr = domDoc.createAttribute(attribute.getQualifiedName()); + if (forceNamespaceAware) { + domAttr = domDoc.createAttributeNS(null, attribute.getQualifiedName()); + } else { + domAttr = domDoc.createAttribute(attribute.getQualifiedName()); + } } else { domAttr = domDoc.createAttributeNS(attribute.getNamespaceURI(),