Hi Folks,
Thank you for your excellent inputs! To recap, here are three ways to view XML Schema:
XML Schema is a constraint language. An XML Schema states constraints that must be satisfied by instances for them to be “valid”. Determining if an instance is valid is a constraint satisfaction problem.
Enormous technical breakthroughs in recent years have led to
amazingly good ways to approach the satisfiability problem.
We now have algorithms that are much more efficient than
anyone had dared believe possible before the year 2000. These
so-called “SAT solvers” are able to handle industrial-strength
problems, involving millions of variables.
“Satisfiability and the Art of Computer Programming” by Donald Knuth
An XML Schema is a specification language. An XML Schema is a specification that informs instance document authors how to construct instances. Determining if an instance is valid is a matter of checking that the instance adheres to the
specification.
Specification languages are generally not directly executed. They
are meant to describe the what, not the how. Indeed, it is considered
as an error if a requirement specification is cluttered with unnecessary
implementation detail.
“Specification language”, Wikipedia
XML Schema is a regular tree grammar language. An application structures – parses – XML instance documents in accordance with a given grammar (XML Schema).
Parsing is the process of structuring a linear representation
in accordance with a given grammar.
For each grammar, there are generally an infinite number of
linear representations (“sentences”) that can be structured with
it. That is, a finite-sized grammar can supply structure to an infinite
number of sentences. This is the main strength of the grammar
paradigm and indeed the main source of the importance of grammars:
they summarize succinctly the structure of an infinite number of
objects of a certain class.
“Parsing Techniques” by Dick Grune and Ceriel J. H. Jacobs
/Roger