XML Schema validation outcomes

29 May 2001

This diagram is the outcome of a discussion on 29 May 2001 among Henry Thompson, Richard Tobin, and Michael Sperberg-McQueen. It was transcribed into HTML and further annotated by MSM on 5 June 2001.

The outcome of XML-Schema-conformant validity assessment is conveyed by two attributes, each of which has three possible values. In the resulting three-by-three matrix, not all combinations are possible; the others distinguish several different states of affairs.

Validity
Validation attempted valid invalid notKnown
full
(this node and all descendants were fully assessed)
OK. Entire subtree from here down has been strictly assessed and is valid.

OK. Entire subtree from here down has been strictly assessed and has an error, either here or at some descendant.

If the current element is locally valid, but a child is invalid (or missing a required declaration), then the current element will have either a [type definition] property or a [type definition name] property with some appropriate value. If there is a problem with the current element (it's not locally valid), then there will be no such properties, and there will be a [schema error code] property.

Not possible: validation-attempted="full" implies strict assessment, and strict assessment implies validity is either "valid" or "invalid"
partial
(either this node was fully assessed but some descendant was not, or vice versa)
OK. This node was strictly assessed and was valid; none of its attributes or children was invalid, and none was missing any required declaration. OK. This node was strictly assessed and was invalid, or else at least one of its direct dependents was invalid. (The [type definition], [type definition name], and [schema error code] properties distinguish these two cases.) Also, some descendant was not strictly assessed. OK. This node was not strictly assessed (but one of its descendants was.)
none
(neither this node nor any descendant was strictly assessed)
Not possible: validation-attempted="none" implies no strict assessment, and validity "valid" implies strict assessment. Not possible: validation-attempted="none" implies no strict assessment, and validity="invalid" implies strict assessment. OK. This subtree was skipped: no strict assessment, no validity information.