The system produces translators between different document encodings.
Users specify an abstract syntax for the class of documents they wish to translate.
Users then specify the conversion rules for mapping this abstract syntax to and from the concrete syntax used by different markup systems. Using this specification, the system generates translators that can convert documents from a specific concrete syntax to the abstract syntax and vice-versa. The difficulty is that not all markup systems use the same model for the same class of documents. To give an example, one of the target systems might explicitly capture section numbers in the markup, while the other might compute them upon request.