> Does this mean that you need to have the entire document parsed before
> you can make the check that the value of the ID matches the ID of some
> element in the document?
Yes.
> If this is true, then for validating parser implementations you will
> first need to build an in memory parse tree using a non-validating
> parser and then validate the document by recursively traversing the
> parse tree.
Not really. All you need to keep is a list of IDs and IDREFs seen so far.
At the end of the document, they had better pair up correctly.
> I am not an SGML expert, so maybe someone here can give me some
> historical reason for why the XML spec needs to have ID's or at least
> ID's that have not previously been declared in the document when an
> IDREF is encountered.
The whole point of ID and IDREF is to have a simple intra-document
link, so that documents that have non-hierarchical natural structures
can be fitted into SGML/XML hierarchies. For that requirement,
forward references and even loops are sometimes essential.
-- John Cowan cowan@ccil.org e'osai ko sarji la lojban.