XML (post-parsing) Checks
Assuming that parsing is successful, the validator creates an ElementTree
object that represents the parsed XML document. It then iterates through the
list of XMLChecks
supplied by the selected
ConstraintSet.
Each of these XMLCheck objects must be a derived class that implements
the run method,
stores any validation results and returns a boolean,
True if the check passes, False otherwise.
XMLCheck objects are _not_ supposed to modify the input.
It may be that information can be derived during a check that is needed
for a later check. This can be stored in the context dictionary.
There is currently no dependency modelling to deal with checks that are
dependent on other checks having already run; in that scenario the check
should be written to proceed in some safe way, for example exiting
without completing the check and logging a SKIP
ValidationResult.
There are a large number of checks, some of which traverse the element tree,
others that just check for a simple individual thing. Each derived
class should document itself. They live in the
xmlChecks module.