I want to verify that my idea of a hierarchy in languages for production of traditional documents bears some resemblance to reality. (Note that I don't expect anything close to a perfect model, just a reasonable and useful approximation.) ============================= Meta-Markup Languages: We use these languages to define Markup, Transform, and Formatting languages that can be tailored to a specific problem. Designing standard Meta-Markup languages allows development of generalized parsing tools. Examples: SGML and XML --- Markup Languages: These languages denote structure and or content. Separating markup from formatting allows automated transformation of a document into different formats for different functions--or even just different print runs. Examples: DocBook, TEI --- Transform Languages: Transform languages provide standard tools to describe how to translate a source document (a Marked Up document) to an object document (a Formatted document.) Examples: DSSSL, XSLT + XSL-Pointer Note: I would argue that CSS is a special case. It is not a true transform language but instead is designed to provide direct instructions for converting strict Markup XHTML to Formatted XHTML. In any case, HTML is not directly relevant to this discussion since it was never meant to be used for hard-copy. --- Formatting Languages: Formatting languages provide high-level instructions that can be directly converted to a typeset document. That is, Formatting languages can be thought of as high-level typesetting languages. Examples: XSL:FO Note: Transitional style HTML 4.0 and XHTML are hybrids that combine elements from the Markup and Formatting levels. After application of a CSS, XHTML is transformed from a Marked Up to a Formatted document. --- Typesetting Languages: These very powerful but difficult languages were designed for electronic typesetting. Using them can be almost as tedious as laying out type mechanically. Examples: RTF, TeX, troff Note: LaTeX obscures the division between Formatting and Typesetting languages. It even contains hints of Markup. --- High-Level Printer Control Languages: These languages provide a bridge between programmers and printers. Examples: dvi, PostScript. --- Low-Level Printer Control Languages: Proprietary languages akin to Assembly language for controlling printers. ------------------------------ Trent Shipley Work: (602) 522-7502 mailto:tshipley@symbio-tech.com http://www.symbio-tech.com