thumb|300px|Un lenguaje especializado basado en SGML es el que se emplea para redactar la versión digital del Oxford English Dictionary. Permite búsquedas sofisticadas, además de facilitar la conversión a HTML. Un lenguaje de marcado o lenguaje de marcas es una forma de codificar un documento que, junto con el texto, incorpora etiquetas o marcas que contienen información adicional acerca de la estructura del texto o su presentación.

El lenguaje de marcas más extendido es el HTML (HyperText Markup Language, lenguaje de marcado de hipertexto), fundamento del World Wide Web (entramado de comunicación de alcance mundial).

Los lenguajes de marcado suelen confundirse con lenguajes de programación. Sin embargo, no son lo mismo, ya que el lenguaje de marcado no tiene funciones aritméticas o variables, como poseen los lenguajes de programación. Históricamente, el marcado se usaba y se usa en la industria editorial y de la comunicación, así como entre autores, editores e impresores.

Un ejemplo de cómo funciona el lenguaje de marcado puede observarse en el dictado de viva voz de un documento a una persona que lo transcribe a máquina: Ponga estilo de carta, ponga comillas, ponga mayúsculas, Estimado Juan, ponga dos puntos, aparte, sangría, ponga primera letra mayúscula, te escribo esta carta, ponga negrillas, de forma muy urgente, cierre negrilla, ya que no me has enviado..., etc.

Clases de lenguajes de marcado miniaturadeimagen|Fragmento de Código HTML (Lenguaje de marcado). Se suele diferenciar entre tres clases de lenguajes de marcado, aunque en la práctica pueden combinarse varias clases en un mismo documento. Por ejemplo, el HTML contiene etiquetas puramente procedimentales, como la B de bold (negrita), junto con otras puramente descriptivas (BLOCKQUOTE, el atributo HREF). El HTML también incluye el elemento PRE, que indica que el texto debe representarse tal y como está escrito.

Marcado de presentación El marcado de presentación es aquel que indica el formato del texto. Este tipo de marcado es útil para maquetar la presentación de un documento para su lectura, pero resulta insuficiente para el procesamiento automático de la información. El marcado de presentación resulta más fácil de elaborar, sobre todo para cantidades pequeñas de información. Sin embargo resulta complicado de mantener o modificar, por lo que su uso se ha ido reduciendo en proyectos grandes en favor de otros tipos de marcado más estructurados.

Se puede tratar de averiguar la estructura de un documento de esta clase buscando pistas en el texto. Por ejemplo, el título puede ir precedido de varios saltos de línea (o renglón), y estar ubicado centrado en la página web. Varios programas pueden deducir la estructura del texto basándose en esta clase de datos, aunque el resultado suele ser bastante imperfecto. Un ejemplo de marcado de presentación, puede ser RTF.

Marcado de procedimientos El marcado de procedimientos está enfocado hacia la presentación del texto, sin embargo, también es visible para el usuario que edita el texto. El programa que representa el documento debe interpretar el código en el mismo orden en que aparece. Por ejemplo, para formatear un título, debe haber una serie de directivas inmediatamente antes del texto en cuestión, indicándole al software instrucciones tales como centrar, aumentar el tamaño de la fuente, o cambiar a negrita. Inmediatamente después del título deberá haber etiquetas inversas que reviertan estos efectos. En sistemas más avanzados se utilizan macros o pilas que facilitan el trabajo.

Algunos ejemplos de marcado de procedimientos son nroff, troff, TeX. Este tipo de marcado se ha usado extensivamente en aplicaciones de edición profesional, manipulados por tipógrafos calificados, ya que puede llegar a ser extremadamente complejo.

Marcado descriptivo El marcado descriptivo o semántico utiliza etiquetas para describir los fragmentos de texto, pero sin especificar cómo deben ser representados, o en qué orden. Los lenguajes expresamente diseñados para generar marcado descriptivo son el SGML y el XML.

Las etiquetas pueden utilizarse para añadir al contenido cualquier clase de metadatos. Por ejemplo, el estándar Atom, un lenguaje de sindicación, proporciona un método para marcar la hora «actualizada», que es el dato facilitado por el editor de cuándo ha sido modificada por última vez cierta información. El estándar no especifica cómo se debe representar, o siquiera si se debe representar. El software puede emplear este dato de múltiples maneras, incluyendo algunas no previstas por los diseñadores del estándar.

Una de las virtudes del marcado descriptivo es su flexibilidad: los fragmentos de texto se etiquetan tal como son, y no tal como deben aparecer. Estos fragmentos pueden utilizarse para más usos de los previstos inicialmente. Por ejemplo, los hiperenlaces fueron diseñados en un principio para que un usuario que lee el texto los pulse. Sin embargo, los buscadores los emplean para localizar nuevas páginas con información relacionada, o para evaluar la popularidad de determinado sitio web.

El marcado descriptivo también simplifica la tarea de reformatear un texto, debido a que la información del formato está separada del propio contenido. Por ejemplo, un fragmento indicado como cursiva (<i>texto</i>), puede emplearse para marcar énfasis o bien para señalar palabras en otro idioma. Esta ambigüedad, presente en el marcado presentacional y en el procedimental, no puede soslayarse más que con una tediosa revisión a mano. Sin embargo, si ambos casos se hubieran diferenciado descriptivamente con etiquetas distintas, podrían representarse de manera diferente sin esfuerzo. miniaturadeimagen El marcado descriptivo está evolucionando hacia el marcado genérico. Los nuevos sistemas de marcado descriptivo estructuran los documentos en árbol, con la posibilidad de añadir referencias cruzadas. Esto permite tratarlos como bases de datos, en las que el propio almacenamiento tiene en cuenta la estructura, no como en los grandes objetos binarios (blobs) como en el pasado. Estos sistemas no tienen un esquema estricto como las bases relacionales, por lo que a menudo se las considera bases semiestructuradas.

Mapa de los lenguajes de marcas

Esta es una relación de los principales lenguajes de marcas ordenados por su campo de aplicación. Nótese que los lenguajes de ámbito general pueden usarse para aplicaciones más específicas (pero no al revés).

Principales GML --> SGML --> XML --> Dialectos XML

Documentos en general Lenguajes descriptivos Lenguajes de presentación Lenguajes ligeros Lenguajes para manuales ASN.1 EBML YAML HTML Rich Text Format S1000D TeX troff Typst BBCode Markdown ReStructuredText setext Textile Wikitexto DocBook HelpML LinuxDoc POD Microsoft Assistance ML

Tecnologías de internet World Wide Web Interfaz de usuario Sindicación Servicios web HTML XHTML Wireless ML Handhelp ML RDF Meta Content Framework GladeXML MXML (Macromedia) User Interface ML XAML and MyXaml XForms XUL / XBL Atom RSS ICE OPML y OML SyncML WSDL XINS WSCL WSFL XML-RPC Webml

Lenguajes especializados Gráficos 2D: SVG, CGM, VML, InkML. Gráficos 3D: VRML/X3D, STEP. Matemática: MathML y OpenMath. Música: LilyPond y MusicXML. Taxonomía: DITA Contabilidad financiera: eXtensible Business Reporting Language. Geomática: Geography ML. Aeronáutica: Spacecraft ML. Multimedia: Synchronized Multimedia Integration Language. Voz: VoiceXML. Mensajería instantánea: XMPP. Videojuegos: BulletML, COLLADA.

Historia

Los lenguajes de marcas se llaman así por la práctica tradicional de marcar los manuscritos con instrucciones de impresión en los márgenes. En la época de la imprenta, esta tarea ha correspondido a los marcadores, que indicaban el tipo de letra, el estilo y el tamaño, así como la corrección de errores, para que otras personas compusieran la tipografía. Esto condujo a la creación de un grupo de marcas estandarizadas. Con la introducción de las computadoras, se trasladó un concepto similar al mundo de la informática.

Orígenes El concepto de lenguaje de marcas fue expuesto por primera vez por William W. Tunnicliffe en 1967.Conferencia titulada The Separation of Information Content of Documents from their Format, celebrada en Ottawa en septiembre de 1967. La mayor novedad consistía en la separación entre la presentación y la estructura del texto. Tunnicliffe, que prefería referirse a este concepto como codificación genérica (generic coding), dirigiría más tarde el desarrollo de un estándar al que bautizaría como GenCode, destinado a la industria editorial. El editor Stanley Fish también expuso ideas similares a finales de los años 1960. Brian Reid, en su disertación de 1980 en la Carnegie Mellon University, mostró su teoría y una implementación práctica de un lenguaje descriptivo todavía en uso.

Sin embargo, quien es considerado el padre de los lenguajes de marcas es Charles Goldfarb, investigador para la compañía IBM. Goldfarb participó en la creación del lenguaje GML, y posteriormente dirigió el comité que elaboró el estándar SGML, la piedra angular de los lenguajes de marcas. En cualquier caso, y a pesar de las controversias sobre su origen, es comúnmente aceptado que la idea surgió de forma independiente varias veces durante los 70, y que se generalizó en los años 1980.

Los lenguajes primitivos El primer lenguaje que diferenció claramente la estructura de la presentación fue ciertamente el Scribe, desarrollado por Brian Reid y descrito en 1980 en su tesis doctoral., también disponible como informe técnico, CMU-CS-81-100. Scribe era revolucionario por varios motivos, no solo porque separaba el estilo de las propias marcas del documento, también por el control gramático del empleo de elementos descriptivos. Scribe influyó en el desarrollo de los lenguajes posteriores.

Otro de los principales estándares de publicación es TeX, creado y mantenido por Donald Knuth en los años 70 y 80. TeX se centra en la estructura detallada del texto y la descripción de las fuentes, fundamentalmente en el campo de las publicaciones matemáticas especializadas. Esto obligó a Knuth a dedicar un tiempo considerable en el estudio de la tipografía. Sin embargo, TeX requiere amplios conocimientos para ser utilizado, por lo que solo ha cuajado en entornos académicos, en los que es el estándar de facto en varias disciplinas científicas. El software más extendido para el empleo de TeX es LaTeX.

Al margen de la industria editorial también surgieron algunas iniciativas, como los lenguajes troff y nroff, lenguajes utilizados para maquetación en sistemas UNIX. Su funcionalidad era limitada porque obligaba a trabajar mediante ensayo y error, hasta que las marcas insertadas en el texto ofrecieran el resultado deseado. Estos lenguajes no llegaron a cuajar en entornos profesionales, siendo utilizados por usuarios ocasionales. La aparición de procesadores de texto tipo WYSIWYG relegó a estos sistemas al olvido.

La generalización de los lenguajes de marcas

La iniciativa que sentaría las bases de los actuales lenguajes, partiría de la empresa IBM, que buscaba nuevas soluciones para mantener grandes cantidades de documentos. El trabajo fue encomendado a Charles F. Goldfarb, que junto con Edward Mosher y Raymond Lorie, diseñó el Generalized Markup Language o GML (nótese que también son las iniciales de sus creadores). Este lenguaje heredó del proyecto GenCode la idea de que la presentación debe separarse del contenido. El marcado, por tanto, se centra en definir la estructura del texto y no su presentación visual.