When a system needs to represent a range of different document types, each document type can be represented by a completely separate declarations.
A system needs to represent different types of information. This information may be used at different times, or may be used by different parts of the system.
Systems which need to represent a variety of information at different times or places.
Processing and authoring of documents can be simplified if different document types are used to represent different sets of data.
Use different document types to represent different sets of data within the system.
In a payroll system, data about the Employees, and data about the hours they work can be represented by separate documents.
<!ELEMENT Employee (Name, HourlyRate)>
<!ATTLIST Employee id ID #REQUIRED>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT HourlyRate (#PCDATA)>
<!ELEMENT PayPeriod (Employee+)>
<!ELEMENT Employee (HoursWorked)>
<!ATTLIST Employee id NMTOKEN>
<!ELEMENT HoursWorked (#PCDATA)>
If different people will authoring the different types of documents it is a good idea to have completely separate document types, because authors will not need to be exposed to parts of the document types that are not needed.
Having separate document types allows the different DTDs to be versioned independently.
allows multiple types of data under one document root.
Multi Root Document Types
allows for multiple types of documents to be declared in a single declaration.