Lenguajes+de+marcado.

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].

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 sí 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]:

Clases de lenguajes 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], y estar ubicado centrado en la [|página]. Varios programas pueden deducir la estructura del texto basándose en esta clase de datos, aunque el resultado suele ser bastante imperfecto.

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 que 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 como 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].

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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// (texto), 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.

<span style="font-family: Arial,sans-serif; font-size: 10pt;">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//.

<span style="font-family: Arial,sans-serif;">Mapa de los lenguajes de marcas
<span style="font-family: Arial,sans-serif; font-size: 10pt;">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). Para ver una lista más completa consulte [|Categoría:Lenguajes de descripción].

<span style="font-family: Arial,sans-serif; font-size: 11pt;">Principales

 * <span style="font-family: Arial,sans-serif; font-size: 10pt;">[|GML] **<span style="font-family: Arial,sans-serif; font-size: 10pt;"> --> **[|SGML]** --> **[|XML]** --> **[|Dialectos XML]**

<span style="font-family: Arial,sans-serif; font-size: 11pt;">Documentos en general

 * **<span style="font-family: Calibri,sans-serif; font-size: 10pt;">Lenguajes descriptivos ** || **<span style="font-family: Calibri,sans-serif; font-size: 10pt;">Lenguajes de presentación ** || **<span style="font-family: Calibri,sans-serif; font-size: 10pt;">[|Lenguajes ligeros] ** || **<span style="font-family: Calibri,sans-serif; font-size: 10pt;">Lenguajes para manuales ** ||
 * § [|ASN.1]

§ [|EBML]

§ [|YAML] || § [|Rich Text Format]

§ [|S1000D]

§ [|TeX]

§ [|troff]

§ [|HTML] || § [|BBCode]

§ [|Markdown]

§ [|ReStructuredText]

§ [|setext]

§ [|Textile]

§ [|Wikitexto] || § [|DocBook]

§ [|HelpML]

§ [|LinuxDoc]

§ [|POD]

§ [|Microsoft Assistance ML] ||

<span style="font-family: Arial,sans-serif; font-size: 11pt;">Tecnologías de internet

 * **<span style="font-family: Calibri,sans-serif; font-size: 10pt;">World Wide Web ** || **<span style="font-family: Calibri,sans-serif; font-size: 10pt;">Interfaz de usuario ** || **<span style="font-family: Calibri,sans-serif; font-size: 10pt;">Sindicación ** || **<span style="font-family: Calibri,sans-serif; font-size: 10pt;">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] ||

<span style="font-family: Arial,sans-serif; font-size: 11pt;">Lenguajes especializados
§ <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">Gráficos 2D: [|SVG], [|CGM], [|VML], [|InkML]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">Gráficos 3D: [|VRML]/[|X3D], [|STEP]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">[|Matemática]: [|MathML] y [|OpenMath]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">[|Música]: [|LilyPond] y [|MusicXML]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">[|Taxonomía]: [|DITA] § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">[|Finanzas]: [|eXtensible Bussiness Reporting Language], [|Financial products ML]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">[|Geomática]: [|Geography ML]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">[|Aeronáutica]: [|Spacecraft ML]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">[|Multimedia]: [|Synchronized Multimedia Integration Language]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">Voz: [|VoiceXML]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">[|Mensajería instantánea]: [|XMPP]. § <span style="background-color: white; font-family: Arial,sans-serif; font-size: 10pt;">Videojuegos: [|BulletML], [|COLLADA].