I am using the xerces parser and Dom implementation as the base of a
simple XML editor.
The editor has a source and a tree (DOM) view.
Using the DOM in an editor requires other functionalitiy then just
using a DOM for showing or validating purposes.
In fact there are two issues with the current implementation, making
it very hard to use xerces for this purpose.
1. It may be clear that it is important that the user gets the same
(or nearly the same) xml after switching from source to DOM and back.
2. The user don't want unexpected additions or mutations in the DOM
while editing or validating.
I will give some examples:
· It is not possible store entity references in attribute values
when building a DOM, making is impossible to get the original XML
back after serializing. There is a jira issue for this problem, see
https://issues.apache.org/jira/browse/XERCESJ-1225
· The DOMNormalizer adds default required attributes to the DOM
tree. Altough perfectly right according to the official
specifications, this is not desired for the use in an editor.
· First it will produce a error message "cvc-complex-type.4:
Attribute 'xxxxx' must appear on element 'yyyyyy', which is in fact
not valid anymore, because the problem is already solved by the
DOMNormalizer, and secondly the XML is not the same anymore. These
two things are confusing for the user. At this moment it is not
happening for elements , but It looks like the same behavior is going
to be implemented.
· Adding a textNode which is adjacent to another, will
immediately be delete by the DOMNormalizer. Again, this may be
perfectly right, but confusing for a user when editing in a DOM. And
it is not possible to validate the DOM without this "side-effect".
Feedback of what happend is given by all kind of document events,
which is great to still give some explanation to the user and keep
trees in sync. But I would prefer to let some things not happen
and be in control in the front.
I really hope that in the future xerces will bring more "features or
properties" to control the behavior of the DOMParser and DOMNormalizer.
D. Deneer