Validating IDREFS...

David Megginson david at
Sun Aug 30 13:25:29 BST 1998

Tyler Baker writes:

 > > You need to maintain a hash table of IDs in order to enforce the ID VC
 > > (uniqueness of IDs).  To check matching of IDs you just add a boolean
 > > that says whether the ID has been defined yet.  At the end of the
 > > document, iterate over the hash table and give an error for each
 > > undefined ID.
 > This I know is one idea to get around this problem and this is
 > basically my current implementation as well, but shouldn't a
 > validating XML parser flag an error if an IDREF does not have a
 > corresponding ID when the error occurs.  In other words, I would
 > think that deferring errors before the content is passed to the
 > document would be illegal.

Here are three points to note:

1. It is more important to pass information to the application about
   _where_ the error occurs, and you can keep that information in the
   hash table.

2. In a tree-based API, the error will be spotted before the tree is
   completed, so the application will know about the error right at the
   start before it can work with the tree.

3. In a stream-based API, the error will be obvious when you have
   parsed the end tag of the document element -- you can report the
   error before you report the element end.

All the best,


David Megginson                 david at

xml-dev: A list for W3C XML Developers. To post, mailto:xml-dev at
Archived as:
To (un)subscribe, mailto:majordomo at the following message;
(un)subscribe xml-dev
To subscribe to the digests, mailto:majordomo at the following message;
subscribe xml-dev-digest
List coordinator, Henry Rzepa (mailto:rzepa at

More information about the Xml-dev mailing list