Just for fun, try running this through our validator:
http://www.stg.brown.edu/service/xmlvalid/
I'm sure you can spot the other (accidental) error, in addi-
tion to the one we've been discussing.
As for the marked section:
By our interpretation, CDSects are atomic, and make up
document content. They aren't the same thing as CharData:
content ::= (element | CharData | Reference | CDSect | PI
| Comment)*
By our interpretation, comments, processing instructions,
and whitespace are allowed in places where content is not,
e.g., after the DTD, but before (or after) the top-level
start/end tag of the document itself:
Misc ::= Comment | PI | S
By our interpretation also, comments, processing instructions,
and whitespace may separate elements in cases like the above.
Here's a brief rewrite that illustrates:
<a><!-- comment --><b/><?pistuff processing instruction ?><c/> </a>
Entities (which act a bit like preprocessor directives) may
also take the place of comments, PIs, or whitespace, if they
map to whitespace or an empty string.
That at least is how we thought about things, and why we
implemented our validator the way we did.
Richard Goerwitz
Scholarly Technology Group