Re: Request for clarification

> 1)  The setPrefix() method will throw a  NAMESPACE_ERR DOMException if
> the specified prefix is  malformed.  The same method will also throw an
> INVALID_CHARACTER_ERR if the specified prefix contains an illegal
> character.   What is the difference between a malformed prefix and a
> prefix with an invalid character? How are they distinguished?

We ran into the same question. On the WWW-DOM list it was answered as
follows:

- A qualfied name (QN) is malformed, if you cannot determine if it has a
  prefix, or where the prefix ends and the local name starts. Thus, a QN
  is malformed if it has:

    - more than one colon (:).

    - A colon at the start or at the end of the QN.

- A prefix is malformed if it contains a colon.

So in both these cases a NAMESPACE_ERR is appropriate. In all other cases
(where the QN or prefix doesn't match the XML Name production) a
INVALID_CHARACTER_ERR is appropriate.

> 2) The setPrefix() method will throw a NO_MODIFICATION_ALLOWED_ERR if
> this node is readonly.  How do you determine if a node is readonly or
> not?  Is there a way to specify a node as readonly?  As it turns out, we
> had problems converting our read only tests to Java and do not have any
> tests in this area.  Can anyone suggest a test scenario that will give
> us a read-only node that we can then manipulate?

Entity and EntityReference Node subtrees are read-only. However, you
cannot create Entity Nodes with the DOM Level 2 API alone.

In our DOM level 2 tests for Python DOM implementations the API asks for a
parse method to be passed in, next to the DOMIMplementation to be tested.
This method is expected to accept an arbitrary XML document (stored in a
string) and return a DOM tree built with the DOMImplementation that is
tested.

With the help of this method our tests *can* create Entity Nodes, and thus
execute tests on read-only Node types. We simply pass in a document that
defines an interal DTD which in turn defines an entity.

We test individual attributes on their read-only state by trying to change
them, expecting an exception to be raised. We also test for all situations
where a NO_MODIFICATION_ERR should be raised, for example when trying to
append a Node that itself is a child of a read-only node. There are no
other ways of determining wether or not a Node is read-only.

-- 
Martijn Pieters
| Software Engineer  mailto:mj@digicool.com
| Digital Creations  http://www.digicool.com/
| Creators of Zope   http://www.zope.org/
---------------------------------------------

Received on Friday, 16 March 2001 15:11:27 UTC