RDDL, the Resource Directory Description Language, is an XML
application invented by Jonathan Borden, Tim Bray, and various other members of the
xml-dev mailing list to describe XML applications
identified by namespace URLs. A RDDL document lives at the namespace URL
for the application it describes. RDDL is a hybrid of XHTML Basic and
one custom element, rddl:resource
. A rddl:resource
element is a simple XLink that points to a resource related to the
application the RDDL document describes. Humans with browsers can read
the XHTML parts to learn about the application. Software can read the
rddl:resource
elements.
The people who wrote the namespaces specification couldn't agree on what should be put at the end of a namespace URL. Should it be a DTD, a schema, a specification document, a stylesheet, software for processing the application, or something else? All of these are possible, but none of them are required for any particular XML application. Some applications have DTDs; some don't. Some applications have schemas; some don't. Some applications have stylesheets; some don't. Thus, for the most part, namespaces have been purely formal identifiers. They do not actually locate or identify anything.
"Namespaces in XML" specifically states that "The namespace
name, to serve its intended purpose, should have the characteristics
of uniqueness and persistence. It is not a goal that it be directly
usable for retrieval of a schema (if any exists)." That is, it is not
required that there be anything in particular, such as a DTD or a
schema, at the end of the namespace URL. Indeed, it's not even
required that the namespace name be potentially resolvable. It might
be an irresolvable URN such as urn:isbn:1565922247
. On the other hand, this
doesn't say that there can't be anything at the end of a namespace
URL, just that there doesn't have to be.
Nonetheless, this hasn't stopped numerous developers from typing namespace URLs into their web browser location bars and filling the error logs at the W3C and elsewhere with 404 Not Found errors. It hasn't stopped weekly questions on the xml-dev mailing list about whether it's possible to parse an XML document on a system that's disconnected from the Net. Eventually, the membership of the xml-dev mailing list reached consensus that it was time to put something at the end of namespace URLs, even if they didn't have to.
However, the question still remained, what to put there? All the reasons for not choosing any one thing to put at the end of a namespace URL still applied. Rick Jelliffe suggested fixing the problem by introducing an additional layer of indirection, and Tim Bray proposed doing it with XHTML and XLinks. Instead of putting just one of these at the end of the namespace URL, an XML document containing a list of all the things related to the XML application identified by that particular URL could be put at the end of the namespace URL.
Experience had proven that when presented with a string beginning with http, developers would type it into a browser location bar.[1] Therefore, the basic syntax of RDDL had to be something that looked reasonable when loaded into a browser: preferably, HTML. Furthermore, to make machine processing simple, it also had to be well-formed, perhaps valid, XML. Naturally, XHTML came to mind, and modular XHTML provided just enough extensibility to permit the extra syntax RDDL needed.
[1] In the immortal words of Claude L. Bullard, "All the handwaving about URN/URI/URL doesn't avoid the simple fact that if one puts http:// anywhere in browser display space, the system colors it blue and puts up a finger. The monkey expects a resource and when it doesn't get one, it shocks the monkey. Monkeys don't read specs to find out why they should be shocked. They turn red and put up a finger."