A markup language is a kind of text encoding that represents text as well as details about the structure and appearance of the text. A modern one with widespread use is HTML. Markup languages are used by the publishing industry to communicate printed works among authors, editors, and printers.
The term "markup" is derived from the traditional publishing practice of "marking up" a manuscript, that is, adding printer's instructions in the margins of a paper manuscript. For centuries, this task was done by specialists known as "markup men" who marked up text to indicate what typeface, font, style, and size should be applied to each part, and then handed off the manuscript to someone else for the tedious task of typesetting by hand.
The idea of "markup languages" was apparently first presented by William W. Tunnicliffe at a conference in 1967. However, IBM researcher Charles Goldfarb is more commonly seen today as the "father" of markup languages (because his research transformed the idea into an actual working product).
Some early examples of markup languages available outside the publishing industry can be found in typesetting tools on Unix systems such as troff and nroff. In these systems, formatting commands were inserted into the document text so that typesetting software could format the text according to the editor's specifications. It was a trial and error iterative process to get a document printed correctly. Availability of WYSIWYG ("what you see is what you get") publishing software supplanted much use of these languages among casual users, though serious publishing work still uses markup to specify the non-visual structure of texts.
Another major publishing standard was TeX, created and continuously refined by Donald Knuth in the 1970s and 80s. TeX concentrated on detailed layout of text and font descriptions in order to typeset mathematical books in professional quality. This required Knuth to spend considerable time investigating the art of typesetting. However, TeX requires considerable skill from the user, so that it is mainly used in academia.
The first language to make a clear and clean distinction was Scribe , developed by Brian Reid and described in his doctoral thesis in 1980. Scribe was revolutionary in a number of ways, not least it introduced the idea of styles separated from the marked up document. Scribe influenced the development of Generalized Markup Language (later SGML) and is a direct ancestor to HTML and LaTeX. LaTeX is a de-facto standard in many scientific disciplines.
The idea that markup should be focused on the structural aspects of a document and leave the visual presentation of that structure to the interpreter led to the creation of SGML (Standard Generalized Markup Language), which specified a syntax for including the markup in documents, as well as another system (a so-called "metalanguage") for separately describing what the markup meant. This allowed authors to create and use any markup they wished, selecting tags that made the most sense to them. Examples of such markup languages based on the SGML system are TEI and DocBook. SGML was promulgated as an International Standard in 1986.
However SGML was generally found to be cumbersome, a side effect of attempting to do too much and be too flexible. For example, SGML made end tags optional in certain contexts, because it was thought that markup would be done by overworked support staff who would appreciate saving a few keystrokes here and there.
By 1991, it appeared that SGML would be limited to niche uses while WYSIWYG tools (storing documents in proprietary binary formats) would take over the vast majority of document processing.
The situation changed dramatically when Sir Tim Berners-Lee used some of the SGML syntax, without the meta-language, to create HTML (Hypertext Markup Language). In HTML the markup consists of a set of "known" tags that handle common formatting tasks. However the language was originally created to markup simple scientific papers and therefore had to be greatly expanded in order to offer the rich content the web has today, and for this reason the additions often follow no logical design, although recent efforts have attempted to address this. HTML is likely to be the most used document format in the world today.
Another, newer, markup language that is currently growing in importance is XML (Extensible Markup Language). Unlike HTML which uses a set of "known" tags, XML allows you to create any tag you wish (thus it's extensible) and then describe those tags in a meta-language known as the "DTD" (Document Type Definition). However, DTD's were difficult to write because their syntax was different from XML, so they have recently been supplemented by XML schemas, which are a meta-language defined in terms of XML itself.
XML is similar to the concept of SGML, and in fact, in general terms, XML is a subset of SGML and a superset of HTML. The main purpose of XML (as opposed to using SGML) is to keep the system simpler by focusing on a particular problem — documents on the internet. By doing so they hope to avoid the feature-creep that complicated SGML. The newest incarnation of HTML is XHTML or EXtensible Hypertext Markup Language, a more rigorous and robust version that is in fact XML, and requires documents to be "well-formed" as does XML, but which uses mostly the familiar HTML tags. The main difference between HTML and XHTML from the standpoint of coding the language is that all tags must be closed, including so-called 'empty' tags such as <br> which, not being a 'container tag', must be 'closed' in every instance like:<br />.
A common feature of many markup languages is that they intermix the text of a document with markup instructions in the same data stream or file. Here, for example, is a small section of text marked up in HTML:
<h1> Anatidae </h1> <p> The family <i>Anatidae</i> includes ducks, geese, and swans, but <em>not</em> the closely-related screamers. </p>
The codes enclosed in angle-brackets <like this> are markup instructions, while the text between these instructions is the actual text of the document. The codes "h1", "p", and "em" are examples of structural markup, in that they describe the intended purpose or meaning of the text they include. Specifically, "h1" means "this is a first-level heading", "p" means "this is a paragraph", and "em" means "this is an emphasized word". A device reading such structural markup may apply its own rules or styles for presenting it, using larger type, boldface, indentation, or whatever style it prefers. The "i" instruction is an example of presentational markup. It specifies the exact appearance of the text (in this case, the use of an italic typeface) without specifying the reason for that appearance.
For the humanities, the Text Encoding Initiative (TEI) has published some guidelines about how to encode texts.
- SGML, HTML, HTML element, Z Format XHTML, SMIL, XML, TeX, GML, YAML, Lightweight markup language, WML, Microbrowser, List of markup languages.