This page provides an overview of the patterns on this site. It is written in a more informal, narrative fashion then other indexes, to provide a gentler introduction to the patterns. This description of the patterns should give a good idea of how the different patterns relate, and roughly in what order they will be used.

When creating a system a data representation must be chosen for information, one possibility is to
Use XML. After deciding on XML, investigate existing schema's to see if the project can
Reuse Document Types.

Once XML has been chosen as a data representation, it must be determined what the root elements are, or if multiple document types should be used.
Multiple Document Types can be used to represent a range of different document types, or if documents are related and have some commonalities, a
Multi Root Document Types can be used. If multiple transaction types are needed a
Universal Root can be used. To separate concerns such as transport of the data from the data itself, an
Envelope can be used.

It must be decided how to organize these abstractions. When one abstraction references another one, that is when one abstraction uses information that is declared in another one,
Declare Before First Use. When the same information needs to be referenced from many places, use a
Flyweight. A
Referenced Note can be used when an area of text needs to reference an note in another area of the text. The natural way to structure information in XML is using a hierarchical format, however it is sometimes better to use a more graph-like structure using
Marketplace.

Sometimes a document designer will not be able to foresee all of the uses of a document type, in that case a
Catch-All Element can be used to easily introduce elements from other DTDs.
Role Attribute and
Extensible Content Model can be used to make a more flexible document type by adding element that can be introduced by the document author.