Can organizations define custom validation rules for their DITA specializations?

Organizations can indeed define custom validation rules for their DITA specializations to ensure content consistency and compliance. Here’s how they typically do it:

Custom Schema Development: Organizations develop custom DTDs or XML Schemas that include the definitions and validation rules for their DITA specializations. These custom schemas specify the structure, elements, attributes, and constraints that content must follow to be considered compliant.

Specialization Rules: Within the custom schema, organizations define the specialization rules for their custom elements and attributes. They can set constraints, data types, and cardinalities, ensuring that the content adheres to the desired format and criteria.

Validation Tools: Custom validation tools or scripts are created to work with these custom schemas. These tools can be integrated into the authoring environment or used in a batch process to validate content. They check whether content meets the organization’s rules and DITA standards.

Error Handling: Custom validation tools can include error handling mechanisms that identify non-compliant content, providing feedback to authors or reviewers. This feedback helps in correcting and improving the specialized content.

Consistency Enforcement: The custom validation rules are a key mechanism for enforcing content consistency within the organization’s DITA specializations. They ensure that specialized elements are used correctly and consistently across documents.


Consider an organization specializing DITA for healthcare documentation. They introduce a custom element <medical-procedure> to describe medical procedures. The custom validation rules specify that the <procedure-description> should always be included:

<!-- Custom XML Schema with validation rules for a DITA healthcare specialization -->
<element name="medical-procedure">
      <element name="procedure-description" type="string" minOccurs="1"/>
      <element name="equipment" type="string" minOccurs="0"/>
      <element name="steps" type="string" minOccurs="0"/>