Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
2.6
-
None
-
PatchAvailable
Description
Namespace attributes are not added as attributes to the resulting
DOM tree when using TransformerIdentityImpl. The problem is, that
the namespace-prefix feature is not set to true and therefore the
namespace attributes are not added. This does not conform to the
DOM spec saying that also namespace attributes may be handled as
normal attributes.
I will attach a patch which fixes the issue by calling
reader.setFeature("http://xml.org/sax/features/namespace-prefixes",
true);
of the XMLReader.
The following code shows the problem:
The input XML document looks like this:
<?xml version="1.0"?>
<test xmlns:testns="http://testns.org" testns:testattr="3"/>
And the code used to extract the namespace attributes is as follows:
FileInputStream fis = new FileInputStream("test.xml");
Transformer trfs = TransformerFactory.newInstance().newTransformer();
StreamSource ss = new StreamSource(fis);
DOMResult dr = new DOMResult();
trfs.transform(ss, dr);
Document doc = (Document)dr.getNode();
Node node = doc.getFirstChild();
System.out.println("First node: " + node.getLocalName());
NamedNodeMap nodes = node.getAttributes();
for (int i=0; i<nodes.getLength(); i++)
Finally, the the output looks like this:
First node: test
Attribute: testattr
instead of the expected output:
First node: test
Attribute: testns
Attribute: testattr
Attachments
Attachments
Issue Links
- is depended upon by
-
COCOON-2155 Failing test cases due to additional attributes from namespace declarations in a DOM from parser, but not from serializer
- Open
- relates to
-
XALANJ-762 "Default identity" transform not generating namespace declarations
- Open
-
XALANJ-1749 DOM serialization omits attribute namespace declarations
- Resolved