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

Reply via email to