1.1. Fundamentos de los lenguajes de marcado
Los orígenes de los lenguajes de marcado hay que buscarlos en los primeros procesadores de texto y en los procesos de impresión física relacionados. Estas marcas indicaban a las impresoras cómo debían imprimir determinadas partes del texto. Con la generalización de las pantallas, el uso de estas marcas se amplió para facilitar la presentación visual de la información. La utilidad de las marcas en múltiples contextos no pasó desapercibida para la industria informática, y en la década de 1960 C. Goldfab crea, a instancias de IBM, el GML (Generalized Markup Language), como lenguaje de marcas de formato estandarizado para cualquier clase de documento, independientemente de su contenido. En 1986 se convirtió en el estándar ISO 8879, SGML (Standard Generalized Markup Language). SGML es muy complejo, por lo que su uso es limitado. La aparición del HTML, que usaba un subconjunto limitado de SGML, a comienzos de la década de 1990 y su expansión en el web puso las bases para la aparición, durante esa década, de otros lenguajes de marcado de documentos, como XML, DockBook o DITA, y de un buen número de lenguajes especializados, que hacen uso del marcado.
El conocimiento y la difusión generalizada de los lenguajes de marcado se ha producido como consecuencia del desarrollo del world wide web, desde la década de 1990. Hasta ese momento, su utilización se limitaba al campo de la generación de documentación técnica especializada. Sin embargo, cuando Tim Bernes-Lee busco y desarrolló la manera de preparar documentos para distribuirlos y visualizarlos a través de internet, usando un navegador web, recurrió a los fundamentos del SGML, creó el primer HTML, y dio paso al web tal y como lo conocemos en la actualidad.
Las páginas o documentos web son, en realidad, documentos etiquetados. Su contenido es textual, y el texto, el contenido informativo y documental, se ve complementado por un conjunto de etiquetas o marcas. La lógica subyacente es que cualquier contenido, sea texto, datos, enlaces, etc, se puede marcar, y esa esa marca significará algo para cualquier aplicación que pueda leer ese documento. Si una aplicación, un programa, recibe un documento con etiquetas o marcas, y sabe qué significan esas marcas, entonces puede ejecutar sobre el contenido marcado todas las instrucciones que se le den.
Los lenguajes de marcado se usan en documentos que tienen un contenido informativo y documental. A diferencia de los lenguajes de programación, que sirven para escribir algoritmos (órdenes, secuencias y acciones que una máquina debe ejecutar), los lenguajes de marcado no se ejecutan: simplemente, etiquetan o marcan elementos. El marcado o etiquetado de los elementos no es arbitrario: todo lenguaje tiene una estructura lógica. Cada etiqueta o marca lo que hace es indicar un atributo de aquello que está marcando.
Los lenguajes de marcado se utilizan para todo en internet. No sólo para las páginas web: gran parte de la información que circula entre máquinas a través de la red adopta la forma de documentos etiquetados con lenguajes de marcas. El intercambio de datos entre aplicaciones se hace usando lenguajes de marcado. En los ordenadores de escritorio se pueden encontrar muchas aplicaciones que guardan información en ficheros etiquetados, aunque el usuario o usuaria sea ignorante de ello. Los documentos con información etiquetada mediante lenguajes de marcado son omnipresentes.
Los lenguajes de marcado no son para humanos: son para máquinas. Aunque es común marcar elementos cuando se está creando un documento (por ejemplo, al crear una página web usando directamente etiquetas o marcas de HTML), son las máquinas y su software el destinatario de estos marcados. En el mismo caso del HTML, se marcan elementos para que el navegador sepa cómo presentarlos al usuario. Al usuario se le aísla de las etiquetas o marcas: cuando se crea un contenido en un blog, por ejemplo, el editor visual lo que está haciendo es trasladar a lenguaje de etiquetado, de manera transparente, lo que el usuario está introduciendo y maquetando.