DTD Confusion

Dear Colleagues,

There seem to be some confusion as to how DTD work.  The tendency of the
authors of the DeltaV document to write ANY in every place that one
would like to be able to the protocol is both unnecessary and unhelpful.
In particular, a DTD is similar to a BNF for a language: a parser need
not use the BNF directly to parse the language, but It still gives
implementers a way of precisely describing the language.

This conception seems to be in the manner that validation is
interpreted. There seems to be the view that if a server validates its
input and a client makes a request with an extended DTD,the server will
not recognize some new tag and thus reject the request. Of course, this
would be contrary to the spirit of this protocol.  However, validation
does not work this way.  If a client sends a message based on a new DTD,
it causes no problem.  The client must send a copy or a reference of the
new DTD with its message.  The server has two choices: it may fetch the
new DTD and validate against that DTD, or the server may simply check
for well-formedness. In both cases, the server need not and should not
reject the request, so long as the request matches the given DTD.  If it
does not match, however, something is in fact wrong with the request. 
Even in this case, the server is still permitted to recover from the
error.  The same applies in reverse for responses from the client.

We opine that a client or a server should be able to send messages that
conform to the DTD that it uses.   This does not inhibit communication
with peers that use another version of the protocol. Each new version
must have its own DTD, but this should be a good basis for understanding
what the protocol actually is in any given version and how it changes
from one version to the next.  A well designed DTD should also help
insure that new version are, in fact, upwardly compatible.

Sincerely,
James J. Hunt
Jürgen Reuter

Received on Saturday, 3 February 2001 21:00:33 UTC