Un lenguaje de marcado es un sistema de codificación de texto que especifica la estructura y el formato de un documento y potencialmente las relaciones entre sus partes. [1] El marcado puede controlar la visualización de un documento o enriquecer su contenido para facilitar el procesamiento automatizado.
Un lenguaje de marcado es un conjunto de reglas que rigen qué información de marcado puede incluirse en un documento y cómo se combina con el contenido del documento de manera que facilite su uso por parte de humanos y programas informáticos. La idea y la terminología evolucionaron a partir del "marcado" de los manuscritos en papel (por ejemplo, con instrucciones de revisión por parte de los editores), tradicionalmente escrito con un bolígrafo rojo o un lápiz azul en los manuscritos de los autores. [2]
Los lenguajes de marcado más antiguos, que normalmente se centran en la tipografía y la presentación, incluyen Troff , TeX y LaTeX . Scribe y la mayoría de los lenguajes de marcado modernos, como XML , identifican los componentes del documento (por ejemplo, encabezados, párrafos y tablas), con la expectativa de que se utilice tecnología, como hojas de estilo , para aplicar formato u otro procesamiento. [ cita necesaria ]
Algunos lenguajes de marcado, como el ampliamente utilizado HTML , tienen una semántica de presentación predefinida , lo que significa que sus especificaciones prescriben algunos aspectos de cómo presentar los datos estructurados en un medio particular. HTML, como DocBook , Open eBook , JATS y muchos otros, se basa en los metalenguajes de marcado SGML y XML . Es decir, SGML y XML permiten a los diseñadores especificar esquemas particulares , que determinan qué elementos, atributos y otras características están permitidas y dónde. [ cita necesaria ]
Una característica clave de la mayoría de los lenguajes de marcado es que permiten mezclar el marcado con el contenido del documento, como texto e imágenes. Por ejemplo, si es necesario enfatizar algunas palabras de una oración o identificarlas como un nombre propio, un término definido u otro elemento especial, el marcado se puede insertar entre los caracteres de la oración.
El sustantivo marcado se deriva de la práctica editorial tradicional llamada "marcar" un manuscrito , [3] que implica agregar anotaciones escritas a mano en forma de instrucciones de impresión simbólicas convencionales , en los márgenes y el texto de un artículo o un manuscrito impreso. .
Durante siglos, esta tarea fue realizada principalmente por hábiles tipógrafos conocidos como "hombres de marcado" [4] o "marcadores" [5] que marcaban el texto para indicar qué tipo de letra , estilo y tamaño se debía aplicar a cada parte, y luego lo pasaban. el manuscrito a otros para que lo compongan a mano o a máquina.
El marcado también lo aplicaban comúnmente los editores, revisores , editores y diseñadores gráficos y, de hecho, los autores de documentos, quienes también podían marcar otras cosas, como correcciones, cambios, etc.
Hay tres categorías generales principales de marcado electrónico, articuladas en Coombs, Renear y DeRose (1987), [6] y Bray (2003). [7]
<cite>
la etiqueta HTML, que se utiliza para etiquetar una cita. El marcado descriptivo, a veces llamado marcado lógico o marcado conceptual , anima a los autores a escribir de una manera que describa el material conceptualmente, en lugar de visualmente. [8]Hay una considerable confusión en las líneas entre los tipos de marcado. En los sistemas modernos de procesamiento de textos, el marcado de presentación a menudo se guarda en sistemas orientados al marcado descriptivo, como XML , y luego las implementaciones lo procesan de manera procesal . La programación en sistemas de marcado de procedimientos, como TeX , se puede utilizar para crear sistemas de marcado de nivel superior que sean de naturaleza más descriptiva, como LaTeX .
En los últimos años, se han desarrollado varios lenguajes de marcado con la facilidad de uso como objetivo clave y sin la participación de organizaciones de estándares, con el objetivo de permitir a los autores crear texto formateado a través de navegadores web , por ejemplo en wikis y foros web . A veces se les llama lenguajes de marcado ligeros . Markdown , BBCode y el lenguaje de marcado utilizado por Wikipedia son ejemplos de dichos lenguajes.
La primera presentación pública conocida de los lenguajes de marcado en el procesamiento de textos por computadora la realizó William W. Tunnicliffe en una conferencia en 1967, aunque prefirió llamarla codificación genérica. Puede verse como una respuesta a la aparición de programas como RUNOFF , cada uno de los cuales utilizaba sus propias notaciones de control, a menudo específicas del dispositivo tipográfico de destino. En la década de 1970, Tunnicliffe lideró el desarrollo de un estándar llamado GenCode para la industria editorial y más tarde fue el primer presidente del comité de la Organización Internacional de Normalización que creó SGML , el primer lenguaje de marcado descriptivo estándar. El diseñador de libros Stanley Rice publicó especulaciones similares en 1970. [9]
Brian Reid , en su disertación de 1980 en la Universidad Carnegie Mellon , desarrolló la teoría y una implementación práctica del marcado descriptivo en el uso real. Sin embargo, hoy en día se considera más comúnmente al investigador de IBM Charles Goldfarb como el "padre" de los lenguajes de marcado. A Goldfarb se le ocurrió la idea básica mientras trabajaba en un primitivo sistema de gestión de documentos destinado a bufetes de abogados en 1969, y ayudó a inventar IBM GML ese mismo año. GML se reveló públicamente por primera vez en 1973.
En 1975, Goldfarb se mudó de Cambridge, Massachusetts a Silicon Valley y se convirtió en planificador de productos en el IBM Almaden Research Center . Allí, convenció a los ejecutivos de IBM para que implementaran GML comercialmente en 1978 como parte del producto Document Composition Facility de IBM, y en unos pocos años se utilizó ampliamente en los negocios.
SGML, que se basó tanto en GML como en GenCode, fue un proyecto ISO en el que trabajó Goldfarb a partir de 1974. [10] Goldfarb finalmente se convirtió en presidente del comité SGML. SGML fue lanzado por primera vez por ISO como estándar ISO 8879 en octubre de 1986.
Algunos de los primeros ejemplos de lenguajes de marcado informático disponibles fuera de la industria editorial se pueden encontrar en herramientas de composición tipográfica en sistemas Unix como troff y nroff . En estos sistemas, se insertaban comandos de formato en el texto del documento para que el software de composición pudiera formatear el texto de acuerdo con las especificaciones del editor. Fue un proceso iterativo de prueba y error para imprimir un documento correctamente. [11] La disponibilidad del software de publicación WYSIWYG ("lo que ves es lo que obtienes") suplantó gran parte del uso de estos lenguajes entre los usuarios ocasionales, aunque el trabajo editorial serio todavía utiliza marcas para especificar la estructura no visual de los textos, y ahora los editores WYSIWYG Por lo general, guarda los documentos en un formato basado en lenguaje de marcado.
Otro estándar editorial importante es TeX , creado y perfeccionado por Donald Knuth en las décadas de 1970 y 1980. TeX se concentró en el diseño detallado de texto y descripciones de fuentes para componer libros de matemáticas. Esto requirió que Knuth dedicara un tiempo considerable a investigar el arte de la composición tipográfica . TeX se utiliza principalmente en el mundo académico , donde es un estándar de facto en muchas disciplinas científicas. Un paquete de macros de TeX conocido como LaTeX proporciona un sistema de marcado descriptivo además de TeX y se utiliza ampliamente tanto entre la comunidad científica como entre la industria editorial.
El primer lenguaje que hizo una distinción clara entre estructura y presentación fue Scribe , desarrollado por Brian Reid y descrito en su tesis doctoral en 1980. [12] Scribe fue revolucionario en varios sentidos, al introducir la idea de estilos separados de lo marcado. documento y una gramática que controlaba el uso de elementos descriptivos. Scribe influyó en el desarrollo del lenguaje de marcado generalizado (más tarde SGML), [13] y es un antepasado directo de HTML y LaTeX . [14]
A principios de la década de 1980, la idea de que el marcado debería centrarse en los aspectos estructurales de un documento y dejar la presentación visual de esa estructura al intérprete llevó a la creación de SGML . El lenguaje fue desarrollado por un comité presidido por Goldfarb. Incorporó ideas de muchas fuentes diferentes, incluido el proyecto GenCode de Tunnicliffe. Sharon Adler, Anders Berglund y James A. Marke también fueron miembros clave del comité SGML.
SGML especificó una sintaxis para incluir el marcado en los documentos, así como una para describir por separado qué etiquetas estaban permitidas y dónde (la Definición de tipo de documento ( DTD ), más tarde conocida como esquema ). Esto permitió a los autores crear y utilizar cualquier marcado que desearan, seleccionando las etiquetas que tenían más sentido para ellos y fueron nombradas en sus propios lenguajes naturales, al tiempo que permitía la verificación automática. Por lo tanto, SGML es propiamente un metalenguaje , y muchos lenguajes de marcado particulares se derivan de él. Desde finales de los años 80 en adelante, la mayoría de los nuevos lenguajes de marcado se han basado en el sistema SGML, incluidos, por ejemplo, TEI y DocBook . SGML fue promulgado como estándar internacional por la Organización Internacional de Normalización , ISO 8879, en 1986. [15]
SGML encontró amplia aceptación y uso en campos con requisitos de documentación a gran escala. Sin embargo, muchos lo encontraron engorroso y difícil de aprender, un efecto secundario de que su diseño intentaba hacer demasiado y era demasiado flexible. Por ejemplo, SGML hizo que las etiquetas finales (o etiquetas iniciales, o incluso ambas) fueran opcionales en ciertos contextos, porque sus desarrolladores pensaron que el personal de soporte con exceso de trabajo realizaría el marcado manualmente y agradecería guardar las pulsaciones de teclas [ cita necesaria ] .
En 1989, el científico informático Sir Tim Berners-Lee escribió un memorando proponiendo un sistema de hipertexto basado en Internet , [16] luego especificó HTML y escribió el navegador y el software del servidor a finales de 1990. La primera descripción de HTML disponible públicamente fue una documento llamado "Etiquetas HTML", mencionado por primera vez en Internet por Berners-Lee a finales de 1991. [17] [18] Describe 18 elementos que comprenden el diseño inicial, relativamente simple, de HTML. Excepto por la etiqueta de hipervínculo, estos estaban fuertemente influenciados por SGMLguid , un formato de documentación interno basado en SGML en el CERN , y muy similar al esquema de muestra en el estándar SGML. Once de estos elementos todavía existen en HTML 4. [19]
Berners-Lee consideró HTML una aplicación SGML. El Grupo de Trabajo de Ingeniería de Internet (IETF) lo definió formalmente como tal con la publicación a mediados de 1993 de la primera propuesta para una especificación HTML: "Lenguaje de marcado de hipertexto (HTML)". Borrador de Internet Archivado el 3 de enero de 2017 en Wayback Machine por Berners-Lee y Dan Connolly , que incluían una definición de tipo de documento SGML para definir la gramática. [20] Muchos de los elementos de texto HTML se encuentran en el informe técnico ISO TR 9537 de 1988, Técnicas para usar SGML , que a su vez cubre las características de los primeros lenguajes de formato de texto, como el utilizado por el comando RUNOFF desarrollado a principios de la década de 1960 para Sistema operativo CTSS (Sistema de tiempo compartido compatible). Estos comandos de formato se derivaron de los utilizados por los tipógrafos para formatear documentos manualmente. Steven DeRose [21] sostiene que el uso de HTML de marcado descriptivo (y la influencia de SGML en particular) fue un factor importante en el éxito de la Web, debido a la flexibilidad y extensibilidad que permitió. HTML se convirtió en el principal lenguaje de marcado para crear páginas web y otra información que se puede mostrar en un navegador web y es probablemente el lenguaje de marcado más utilizado en el mundo actual.
XML (lenguaje de marcado extensible) es un metalenguaje de marcado muy utilizado. XML fue desarrollado por el World Wide Web Consortium en un comité creado y presidido por Jon Bosak . El objetivo principal de XML era simplificar SGML centrándose en un problema particular: los documentos en Internet. [22] XML sigue siendo un metalenguaje como SGML, que permite a los usuarios crear cualquier etiqueta necesaria (por lo tanto, "extensible") y luego describir esas etiquetas y sus usos permitidos.
La adopción de XML fue útil porque cada documento XML se puede escribir de tal manera que también sea un documento SGML, y los usuarios y el software SGML existentes podrían cambiar a XML con bastante facilidad. Sin embargo, XML eliminó muchas de las características más complejas de SGML para simplificar los entornos de implementación, como documentos y publicaciones. Parecía encontrar un punto medio entre simplicidad y flexibilidad, además de admitir herramientas de validación y definición de esquemas muy sólidas, y fue rápidamente adoptado para muchos otros usos. XML ahora se usa ampliamente para comunicar datos entre aplicaciones, para serializar datos de programas, para protocolos de comunicaciones de hardware, gráficos vectoriales y muchos otros usos, además de documentos.
Desde enero de 2000 hasta el lanzamiento de HTML 5, todas las recomendaciones del W3C para HTML se han basado en XML, utilizando la abreviatura XHTML ( Lenguaje de marcado de hipertexto extensible ) . La especificación del lenguaje requiere que los documentos web XHTML sean documentos XML bien formados . Esto permite documentos más rigurosos y sólidos, al evitar muchos errores de sintaxis que históricamente conducían a comportamientos incompatibles del navegador, y al mismo tiempo seguir utilizando componentes de documentos que están familiarizados con HTML.
Una de las diferencias más notables entre HTML y XHTML es la regla de que todas las etiquetas deben estar cerradas : las etiquetas HTML vacías, como las <br>
que deben cerrarse con una etiqueta final normal o reemplazarse por una forma especial: <br />
(el espacio antes del ' /
' en la etiqueta final es opcional, pero se usa con frecuencia porque permite que algunos navegadores web anteriores a XML y analizadores SGML acepten la etiqueta). Otra diferencia es que todos los valores de los atributos de las etiquetas deben citarse. Ambas diferencias suelen criticarse por ser detalladas, pero también se elogian porque hacen que sea mucho más fácil detectar, localizar y reparar errores. Finalmente, todos los nombres de etiquetas y atributos dentro del espacio de nombres XHTML deben estar en minúsculas para que sean válidos. HTML, por otro lado, no distinguía entre mayúsculas y minúsculas.
Actualmente existen muchas aplicaciones basadas en XML, incluido el marco de descripción de recursos como RDF/XML , XForms , DocBook , SOAP y el lenguaje de ontología web (OWL). Para obtener una lista parcial de estos, consulte Lista de lenguajes de marcado XML .
Una característica común de muchos lenguajes de marcado es que entremezclan el texto de un documento con instrucciones de marcado en el mismo flujo de datos o archivo. Esto no es necesario; es posible aislar el marcado del contenido del texto mediante punteros, desplazamientos, ID u otros métodos para coordinar ambos. Este tipo de "marcado separador" es típico de las representaciones internas que utilizan los programas para trabajar con documentos marcados. Sin embargo, el marcado integrado o "en línea" es mucho más común en otros lugares. Aquí, por ejemplo, hay una pequeña sección de texto marcada en HTML:
<!DOCTYPE html><html> < cabeza > < meta juego de caracteres = "utf-8" > < título > Mi página de prueba </ título > </cabeza> < cuerpo > < h1 > Mozilla es genial </ h1 > < img src = "images/firefox-icon.png" alt = "El logotipo de Firefox: un zorro en llamas que rodea la Tierra". > < p > En Mozilla, somos una comunidad global de </ p > < ul > <!-- cambiado a lista en el tutorial --> < li > tecnólogos </ li > < li > pensadores </ li > < li > constructores </ li > </ul> < p > trabajando juntos para mantener Internet vivo y accesible, para que personas de todo el mundo puedan ser contribuyentes y creadores informados de la Web. Creemos que este acto de colaboración humana a través de una plataforma abierta es esencial para el crecimiento individual y nuestro futuro colectivo. </p> < p > Lea el < a href = "https://www.mozilla.org/en-US/about/manifesto/" > Mozilla Manifesto </ a > para aprender aún más sobre los valores y principios que guían la búsqueda de nuestra misión. </p> </cuerpo></html>
Los códigos encerrados entre corchetes angulares < like this>
son instrucciones de marcado (conocidas como etiquetas), mientras que el texto entre estas instrucciones es el texto real del documento. Los códigos h1
, p
y em
son ejemplos de marcado semántico , ya que describen el propósito previsto o el significado del texto que incluyen. Específicamente, h1
significa "este es un título de primer nivel", p
significa "este es un párrafo" y em
significa "esta es una palabra o frase enfatizada". Un programa que interprete dicho marcado estructural puede aplicar sus propias reglas o estilos para presentar los distintos fragmentos de texto, utilizando diferentes tipos de letra, negrita, tamaño de fuente, sangría, color u otros estilos, según se desee. Por ejemplo, una etiqueta como "h1" (nivel de encabezado 1) podría presentarse en un tipo de letra sans-serif grande y en negrita en un artículo, o podría estar subrayada en un documento monoespaciado (estilo de máquina de escribir), o simplemente podría no aparecer. cambiar la presentación en absoluto.
En cambio, la i
etiqueta en HTML 4 es un ejemplo de marcado de presentación , que generalmente se utiliza para especificar una característica particular del texto sin especificar el motivo de esa aparición. En este caso, el i
elemento dicta el uso de un tipo de letra en cursiva. Sin embargo, en HTML 5 , este elemento se ha reutilizado con un uso más semántico: para indicar un lapso de texto Archivado el 2018-03-08 en Wayback Machine en una voz o estado de ánimo alternativo, o de otro modo compensado de la prosa normal de una manera indicando una calidad diferente del texto
. Por ejemplo, resulta apropiado utilizar el i
elemento para indicar una designación taxonómica o una frase en otro idioma. [23] El cambio se realizó para facilitar la transición de HTML 4 a HTML 5 lo más fluida posible, de modo que los usos obsoletos de elementos de presentación preservaran la semántica prevista más probable.
La Text Encoding Initiative (TEI) ha publicado extensas directrices [24] sobre cómo codificar textos de interés en las humanidades y las ciencias sociales, desarrolladas a lo largo de años de trabajo cooperativo internacional. Estas pautas se utilizan en proyectos que codifican documentos históricos, trabajos de académicos particulares, períodos, géneros, etc.
Si bien la idea del lenguaje de marcado se originó en los documentos de texto, cada vez se utilizan más lenguajes de marcado en la presentación de otros tipos de información, incluidas listas de reproducción , gráficos vectoriales , servicios web , distribución de contenido e interfaces de usuario . La mayoría de ellas son aplicaciones XML porque XML es un lenguaje extensible y bien definido. [¿ según quién? ]
El uso de XML también ha llevado a la posibilidad de combinar múltiples lenguajes de marcado en un solo perfil, como XHTML+SMIL y XHTML+MathML+SVG . [25]
Algunos críticos prefieren ir a la vieja escuela y usar un bolígrafo rojo en los resultados impresos.
SGML es muy general. HTML es una aplicación específica de la sintaxis básica SGML aplicada a documentos de hipertexto de estructura sencilla.