Types of customization

Most customizations of a document-class like DocBook are either selecting a subset, or adding domain-specific elements or attributes, or a combination of those. In the latter case, using this tool it should trivial to clearly separate the restricting part of the customization from the extending part. It would even be trivial to maintain several extentions that would be based on a single subset of DocBook (or TEI, or whatever), like the following:

                        DocBook
                           |
                           |
                           v
                        Subset
                          / \
                         /   \
                        /     \
                        v     v
                     DTD-1   DTD-2
    

Following these considerations, this tool will initially focus on operations that either strictly restrict, or strictly extend a DTD. Unfortunately, all such operations are not easy to define formally, and in a number of cases it will be easier for the customization layer designer to specify a restricted or extented content model, and have the tool just ensure that the specification is either a subset or a superset.

Other operations will be investigated and implemented later, should the need arise. Element renaming, being defined and implemented be really simple means, will surely be an exception.

Both for restriction and extension, a declaration should be available to the customization layer author to declare a global pure restriction or extension. This will be used to forbid invalid constructs, and issue warning for easily mis-used constructs.