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.
|Next Page >>>
|Types of customization