Journal Publishing DTD Version 2.3


Version 2.3

Version 2.3 was released on March 28, 2007. The full list of updates is available in the Change Report.

The files for Version 2.3 are available:

The Tag Library for version 2.3 is here: http://dtd.nlm.nih.gov/publishing/tag-library/2.3/

OASIS CALS Table Model

A Tag Library for the OASIS CALS Table model is now available. Like the Tag Libraries for the DTDs, the OASIS CALS Table Tag Library is available on the Web or by anonymous FTP.

How to Build A New Custom DTD

The Concept

The basic idea for a new DTD is that all lower-level elements (paragraphs, lists, figures, etc.) will be defined in modules, either the modules of the Suite or in new DTD-specific modules, not in the DTD itself. The DTD will be fairly short and include only definitions of the topmost element(s), at least the document element and maybe its children.

Modules are defined using External Parameter Entities in with the Suite Module of Modules or in the DTD-specific Module of Modules. Modules are called (referenced) in the DTD, in the order needed to define the Parameter Entities in sequence.

Version 2.1 of this Journal Publishing DTD was written as an example of the new best-practice customization technique. A new DTD that follows this plan will probably consist of the following modules:

  • A DTD module to define the top-level elements (e.g., yournew.dtd) ;

  • A DTD-specific definition of element classes to add new classes and over-ride the default classes; (for example, %yournew-classes.ent;)

  • A DTD-specific definition of element mixes to add new mixes and over-ride the default mixes; (for example, %yournew-mixes.ent;);

  • A DTD-specific module of content model over-rides (for example, %yournew-models.ent;).

  • A DTD-specific Module of Modules to name the non-Suite modules in the DTD (for example, %yournew-modules.ent;)

  • DTD-specific modules to hold new types of element declarations (e.g., %taxonomic-key.ent; or %help-topic-meta.ent;); and

  • All or most of the modules in the base Suite.

Example

To show the process, here is a series of instructions for making a new DTD, illustrated by showing how Journal Publishing DTD was created from the modules of the whole Suite.

  1. Modules —Write a new DTD-specific Module of Modules, which defines all new customization modules the DTD needs. (As an example, the Publishing DTD created the module %pubcustom-modules.ent;, which contains the definitions of the class-over-ride module %journalpubcustom-classes.ent;, the mix-over-ride module %journalpubcustom-mixes.ent;, and the models-and-atttributes-over-ride module %journalpubcustom-models.ent;.)

  2. Class Over-rides —Write a DTD-specific class-over-ride module, defining any over-rides to the Suite classes. These classes were defined in the default classes module. (As an example, the Publishing DTD created the module %journalpubcustom-classes.ent;, that redefines several classes to be more restricted than in the base Suite, for example, %date.class; is defined as just the element date although the Base Suite also allows the element string-date.)

  3. Mix Over-rides —Write a DTD-specific mix-over-ride module, defining any over-rides to the Suite mixes. These mixes were defined in the default mixes module. (As an example, the Publishing DTD created the module %journalpubcustom-mixes.ent;, in which the mix %just-rendition; is changed form a group of elements to a null string, to make all content models that use this mix into plain #PCDATA.)

  4. Model Over-rides —Create a DTD-specific content-model-over-ride module, defining any over-rides to the content models and attribute lists for the DTD Suite. (As an example, the Publishing DTD created the module %journalpubcustom-models.ent;, in which the model for the element <abstract> is greatly reduced.

  5. New Elements —Write any new element modules needed. These will define any new block-level or phrase-level elements. (As an example, the Publishing DTD added one new element to Suite, <nlm-citation>, which is also in defined in a module of its own.)

  6. DTD Module —Use the modules just described in the construction of a new DTD module. Within that DTD module, the following steps need to happen in the following order:

    • Use an External Parameter Entity Declaration to name and then call the DTD-specific modules of modules (For the Publishing DTD, the module %journalpubcustom-modules.ent;.)

    • Use an External Parameter Entity Declaration to name and then call the DTD Suite modules of modules, which names all the potential modules. (For the Publishing DTD, the module %modules.ent;.);

    • Use an External Parameter Entity reference to call the DTD-specific class over-rides (For the Publishing DTD, the module %journalpubcustom-classes.ent;.);

    • Use an External Parameter Entity reference to call the DTD Suite default classes (For the Publishing DTD, the module %default-classes.ent;.);

    • Use an External Parameter Entity reference to call the DTD-specific mix over-rides (For the Publishing DTD, the module %journalpubcustom-mixes.ent;.);

    • Use an External Parameter Entity reference to call the DTD Suite default mixes (For the Publishing DTD, the module %default-mixes.ent;.);

    • Use an External Parameter Entity reference to call the DTD-specific content models and attribute list over-rides (For the Publishing DTD, the module %journalpubcustom-models.ent;.);

    • Use an External Parameter Entity reference to call in the standard Common Module (%common.ent;) that defines elements and attributes so common they are used by many modules.

    • Select, from the Module to Name the Modules, those modules which contain the elements needed for the DTD (for instance, selecting lists and not selecting math elements) and calling in each of the modules needed; (The Archive DTD calls these in alphabetical order, since the order does not matter.)

    • Define the document element and any other unique elements and entities needed for this DTD. (For example, the Publishing DTD declares only six elements. In most cases, these high-level elements have the same content models they do in the Archiving DTD, but each DTD needs to define its own top elements. The elements defined include: <article> [the top-level element] and its components: <front>, <body>, <back>, <sub-article>, and <response>.)


PubMed Central
NCBI | NLM | NIH
Department of Health & Human Services
Freedom of Information Act | Disclaimer
Last updated: March 27, 2007