On the other hand, it does no good to overplay your cards. Eliot's
assertion that extended DTD syntaxes will _never_ solve the semantics
problems is over-stated in two ways. First, it's not true if we're
talking about solveing single, limited problems. For instance, it's
clearly true that solving _some_ semantics problems would be possible
by adding to the power of DTDs. For instance, the addition of regexp
mapping on content would _increase_ the range of validatable
conditions on documents, and might even enable some applications to
avoid referring to extended semantics. On the other hand, each such single
extension solves only a single problem. Extensibility is still likely
to be a requirement.
Even this limitation doesn't mean that we couldn't solve the schema
problem for once and for all. A Turing complete "semantics testing"
language would allow the verification of all computable properties of
XML documents. There are some serious disadvantages to this as an
apporach: Most interesting properties of arbitrary programs are
uncomputable. Unlike the kinds of declarative conditions often
mentioned for DTD extensions, arbitrary computations can be
intractable. Further, it is only rarely that we need the ability
to specify validity conditions like "this document is valid if and
only if Goldbach's conjecture is true."
I think reactions to proposals for schema languages would be more
generally positive if they concentrated on how to supplement DTDs and
specify things that are impossible in XML (like content restrictions) or
extremely difficult (like modular DTDs) rather than also duplicating
DTD functionality. The hard thing is deciding what semantic features
will be widely useful enough that failing back to arbitrary
computations will be unnecessary, or at least extremely rare.
Making it clear that such languages are supplements to DTD
specification techniques also removes the (valid) criticism that they
are duplicating facilities already in DTDs, and the political
suspicion that they are an attempt to make an end-run around a
delcaration syntax that is accepted and standardized, if not
well beloved of all.
-- David