File naming conventions

The DITA OASIS Technical Committee uses certain conventions for the names of XML grammar files. We suggest using these conventions as a best practice to facilitate interchange of grammar files.

Globally unique identifiers

Vocabulary modules that are intended for use outside of a narrowly-restricted context should have one or more associated, globally-unique names by which the modules can be referenced without regard to their local storage location. The globally-unique names can be public identifiers, URNs, or absolute URLs.

Document type shells

Document type shells should be given a name that distinguishes their name, owner, or purpose; for example, acme-concept.dtd. The document type shells that are provided by the DITA Technical Committee use the root element of the primary specialization as the basis for the file name.

Module names

Each vocabulary module has a short name that is used to construct entity names and other names that are used in associated declarations. Modules also can have abbreviated names that further shorten the short name, for example "sw-d" for the "software" domain, where "software" is the short name and "sw-d" is the abbreviated name.

For structural modules, the module name should be the element type name of the top-level topic or map type defined by the module, such as "concept" or "bookmap".

For element domain modules, the module name should be a name that reflects the subject domain to which the domain applies, such as "highlight" or "software". Domain module names should be sufficiently unique that they are unlikely to conflict with any other domains.

DTD-based specialization modules

Use the following file-naming conventions for DTD-based specialization modules.

Module type File name (entities) File name (elements) Example
Structural ModuleName.ent ModuleName.mod concept.ent or concept.mod
Element domain DomainNameDomain.ent DomainNameDomain.mod highlightDomain.ent or highlightDomain.mod
Attribute domain AttributeNameAttDomain.ent Not applicable deliveryTargetAttDomain.ent

where:

RELAX NG-based specialization modules

Use the following file-naming conventions for RELAX NG-based specialization modules.

Module type File name Example
Structural ModuleNameMod.rng conceptMod.rng
Element domain DomainNameDomainMod.rng highlightDomainMod.rng
Attribute domain AttributeNameAttDomain.rng deliveryTargetAttDomainMod.rng

where:

XSD-based specialization modules

Use the following file-naming conventions for XSD-based specialization modules.

Module File name Example
Structural modules: Element groups ModuleNameGrp.xsd conceptGrp.xsd
Structural modules: All other declarations ModuleNameMod.xsd conceptMod.xsd
Domain modules DomainName.xsd highlightDomain.xsd
Attribute domain AttributeNameAttDomain.xsd deliveryTargetAttDomain.xsd

where:

Constraint modules

Use the following file-naming conventions for constraint modules.

Structural modules

Structural constraint modules should be named using the following format:

DTD qualifierTagnameConstraint.mod
RELAX NG qualifierTagnameConstraintMod.rng
XSD qualifierTagnameConstraintMod.xsd

where:

  • qualifier is a string that is specific to the constraints module and characterizes it, for example, "strict" or "requiredTitle" or "myCompany-".
  • Tagname is the element type name with an initial capital, for example, "Taskbody" or "Topic".

For example, the file names for the constraint that is applied to the general task to create the strict task are strictTaskbodyConstraint.mod, strictTaskbodyConstraintMod.rng, or strictTaskbodyConstraintMod.xsd.

Domain modules

Domain constraint modules should be named using the following format:

DTD qualifierdomainDomainConstraint.ent
RELAX NG qualifierdomainDomainConstraintMod.rng
XSD qualifierdomainDomainConstraintMod.xsd

where:

  • qualifier is a string that is specific to the constraints module and characterizes it, for example, "noSyntaxDiagram" or "myCompany-".
  • domain is the name of the domain to which the constraints apply, for example, "Highlighting" or "Programming".

For example, the file name for a constraint module that removes the syntax diagram from the programming domain might be noSyntaxDiagramProgrammingDomainConstraint.ent.

Because of restrictions on the redefine feature of XML Schema, it is sometimes necessary to use an intermediate level of redefinition, which requires a separate XSD document. In that case, the intermediate XSD document should be named qualifierdomainDomainConstraintsInt.xsd.