A markup language is a text-encoding system which specifies the structure and formatting of a document and potentially the relationships among its parts.
A lightweight markup language (LML) uses a simple and unobtrusive syntax that aims on maintaining human readability on its raw form and minimizing the use of tags.
Markup languages focuses on text format. Do not confuse them with data serialization languages that focuses on data itself, though both terms may overlap sometimes.
Markup Languages Classification
Types of markup languages, articulated in Coombs, Renear, and DeRose (1987) and Bray (2003):
- Presentational
- Procedural
- Descriptive
Presentational
A presentational markup languages is used within a WYSIWYG application to hide the markup code to the user. The text is formatted directly on screen.
Finding a pure presentational markup language in practice is almost impossible.
The typical example is HTML 3.2, with tags like <font>, <center>, <b>bold</b>, etc.
These markup languages are mostly presentational, though they are also partly descriptive:
- HTML 3.2
- Office Open XML (OOXML) standards ECMA-376 and ISO/IEC 29500
- OpenDocument Format (ODF) standard (ISO/IEC 26300)
Procedural
A procedural markup language is embedded within the text to provide instructions about how to process the code. They may use macros to apply on the given text.
Procedural examples are troff and TeX.
You can read this post about procedural markup languages.
Descriptive
A descriptive, logical or conceptual markup language are used to label text components based on what they are, rather than how they should be processed.
Examples of descriptive markup languages are HTML, XHTML or LaTeX.
You can read this post about descriptive markup languages.