Re: DTD Fragments and XML

Paul Prescod <papresco@calum.csclub.uwaterloo.ca> wrote:

> Let's say that I am an XML user. I am happy with, say, the DocBook DTD,
> but need to insert a chemical formula in CML format. Or perhaps I want
> to insert something more mundane, some small element that does not have
> an expression in DocBook: <GRADE> for a student's grade on a project. In
> the SGML world I would combine the two DTDs manually. This is probably a
> painful process of examining content models and parameter entities and
> finding the right place to shoe-horn in my element type.
>
> [...]
>
> I don't think that we can make it easy to combine DTDs without changing
> SGML. But maybe we can figure out a way to declare a namespace for
> elements: to "import" element names in a standard way. You wouldn't be
> able to validate the document but at least it would be clear what the
> elements MEAN.

I think extensibility is still best left to DTD designers.

Taking the converse case, let's say that I am writing a
program to process DocBook-conforming documents.  The
DTD tells me exactly what sorts of elements my application
can expect in what places in a valid document.  If XML
allows users to extend content models arbitrarily, then
it's much harder to write my application since there is
no way to predict how a user might modify the DTD.

Now in the case of DocBook, there are overrideable
parameter entities that let users add new elements
in specific places.  Naturally, my application needs
to be able to handle those, but it can assume that
any new elements will conform to DocBook's application
conventions.  In the absense of any application or
architectural conventions, it's impossible to do much
with an XML or SGML document other than parse it.
Applications can be written to work with a specific
document type or collection of architectures, even
if the concrete "tag set" is user-extensible, but
extensibility must be specified by the architecture,
not the base XML or SGML syntax.


--Joe English

  jenglish@crl.com

Received on Saturday, 3 May 1997 14:46:51 UTC