Elements consist of a start tag (e.g. "<start>"), its contents, and an end tag (e.g. "</start>").
The contents of an element are ordered.
Start tags can have attributes -- name/value pairs (e.g. "<start kind="slow"/>).
Elements must be well-formed: balanced, conforming syntax, attributes are valid, no duplicates, etc.
<top> <next> <bottom> ... </bottom> </next> </top>
(more will be said about well-formed later).
The element name must conform to:
[5] Name ::= (Letter | '_' | ':') (NameChar)*