The goal of this project is to allow one to easily customize
a document-class schema (SGML or XML DTD, W3C or TREX or RELAX XML
schema, Thot S schema description, etc.), by specifying at a high
level of abstraction what changes to do (like: removing an element
or adding a new one, restricting the content model of an element,
etc.), and to have an automated tool that will do all the
necessary mechanic steps that would be fastidious and error-prone
if done by hand.
This is because of the following considerations:
popular document-class like DocBook, designed to address
a large number of needs, are necessary too vast for a number
of those needs. Also, despite this they can't be universal,
and sometimes they miss a couple of features. Hence the (not
new) idea of customizing a well-known document-class for a
particular application.
the process of customizating a DTD, in addition to the
design stage, contains a costly mechanical sub-process, namely
ensuring that the whole customization consistently implements
a change (like the removal of an element, that must be
propagated to all elements that reference it). This process
requires a good knowledge of the internal structure of the
base DTD, as well as good tools which can help to get this
knowledge and to get a complete view of the result of the
customization (eg. dtd* from
PerlSGML).
the needs that led to a customization, or at least the
understanding of those needs, will probably evolve with time,
leading to multiple revisions of a customization layer. Doing
this maintainance by hand has at least the same knowledge
requirements than the initial customization, to which we now
have to add the knowledge of the initial customization. It
grows even more if you have a tree/cascade of customization
layers.
the base DTD for a customization may itself have to
evolve with time. In many cases it will be useful to update a
customized DTD to the latest revision of the base DTD. Again,
this is costly if done manually.
The idea for this software came to me while designing a
DocBook customization, realizing that ideally I would need not one
single customization layer, but really a hierarchy of
customization layers, that would be very difficult to maintain
without such a tool.