UP | HOME

Clasificación de lenguajes de marcas

Table of Contents

En este punto ya te habrás dado cuenta que existen muchas opciones de lenguajes de marcas pero no todos tienen el mismo propósito ni se pueden intercambiar. Se hace necesario una clasificación de los mismos para situarlos y estar capacitado de elegir entre uno u otro en función de las necesidades.

Según la bibliografía que consultes verás diferentes formas de clasificarlos, agruparlos o dividirlos. Yo os voy plantear una clasificación según el uso que se le puede dar a cada lenguaje de marcas. Es por ello que verás que el mismo lenguaje de marca puede aparecer varias veces en diferentes categorías.

Para uso estructural o semántico

Se centran exclusivamente en definir qué es cada elemento o la lógica de los datos, desatendiéndose por completo del aspecto visual. Ejemplos, dentro de esta categoría, serían:

  • XML para el intercambio de datos, por ejemplo:
<?xml version="1.0" encoding="UTF-8"?>
<catalogo_libros>
    <libro isbn="978-00-000-0001-1">
        <titulo>El ingenioso hidalgo don Quijote de la Mancha</titulo>
        <autor>
            <nombre>Miguel</nombre>
            <apellidos>de Cervantes Saavedra</apellidos>
        </autor>
        <publicacion_año>1605</publicacion_año>
        <genero>Novela</genero>
    </libro>

    <libro isbn="978-00-000-0002-8">
        <titulo>Cien años de soledad</titulo>
        <autor>
            <nombre>Gabriel</nombre>
            <apellidos>García Márquez</apellidos>
        </autor>
        <publicacion_año>1967</publicacion_año>
        <genero>Realismo mágico</genero>
    </libro>

    <libro isbn="978-00-000-0004-2">
        <titulo>El rayo que no cesa</titulo>
        <autor>
            <nombre>Miguel</nombre>
            <apellidos>Hernández</apellidos>
        </autor>
        <publicacion_año>1936</publicacion_año>
        <genero>Poesía</genero>
    </libro>
</catalogo_libros>
  • HTML5 que es una versión de HTML (la última) donde se fuerza al usuario a dividir contenido de presentación, por ejemplo:
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Catálogo de Libros</title>
</head>
<body>

    <main>
        <header>
            <h1>Catálogo de Libros</h1>
        </header>

        <section id="catalogo">

            <article data-isbn="978-00-000-0001-1">
                <h2>El ingenioso hidalgo don Quijote de la Mancha</h2>
                <p><strong>Autor:</strong> Miguel de Cervantes Saavedra</p>
                <p><strong>Año de publicación:</strong> 1605</p>
                <p><strong>Género:</strong> Novela</p>
            </article>

            <article data-isbn="978-00-000-0002-8">
                <h2>Cien años de soledad</h2>
                <p><strong>Autor:</strong> Gabriel García Márquez</p>
                <p><strong>Año de publicación:</strong> 1967</p>
                <p><strong>Género:</strong> Realismo mágico</p>
            </article>

            <article data-isbn="978-00-000-0004-2">
                <h2>El rayo que no cesa</h2>
                <p><strong>Autor:</strong> Miguel Hernández</p>
                <p><strong>Año de publicación:</strong> 1936</p>
                <p><strong>Género:</strong> Poesía</p>
            </article>

        </section>
    </main>

</body>
</html>

Para presentación o formato

En ellos se indica de forma explícita cómo debe verse el documento impreso o en pantalla (fuentes, estilo, márgenes, colores, alineaciones… formato en general). Aquí nos encontramos con lenguajes de marcas como:

  • La combinación HTML con CSS usado en entornos web. Por ejemplo, a continuación puedes ver cómo se añaden estilos CSS a la página web HTML anterior (por simplicidad los estilos CSS se han añadido al mismo documento HTML aunque verás más adelante, en este curso, que no es lo más recomendable):
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Catálogo de Libros - HTML + CSS</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            background-color: #f0f0f0;
            padding: 20px;
        }

        h1 {
            color: #1a365d;
        }

        article {
            background-color: white;
            border-left: 5px solid #3182ce;
            padding: 15px;
            margin-bottom: 15px;
        }
    </style>
</head>
<body>
    <h1>Catálogo de Libros</h1>

    <article>
        <h2>El ingenioso hidalgo don Quijote de la Mancha</h2>
        <p><strong>Autor:</strong> Miguel de Cervantes Saavedra</p>
        <p><strong>Año:</strong> 1605</p>
        <p><strong>Género:</strong> Novela</p>
    </article>

    <article>
        <h2>Cien años de soledad</h2>
        <p><strong>Autor:</strong> Gabriel García Márquez</p>
        <p><strong>Año:</strong> 1967</p>
        <p><strong>Género:</strong> Realismo mágico</p>
    </article>

    <article>
        <h2>El rayo que no cesa</h2>
        <p><strong>Autor:</strong> Miguel Hernández</p>
        <p><strong>Año:</strong> 1936</p>
        <p><strong>Género:</strong> Poesía</p>
    </article>
</body>
</html>
  • LaTeX que es una framework de TeX y se usa para escribir documentos científicos y, más concretamente, matemáticos aunque es un procesador de textos que se puede usar de forma general. Por ejemplo, podemos escribir nuestro catálogo de libros con una serie de estilos usando LaTeX:
\documentclass[11pt,a4paper]{article}

% --- 1. CONFIGURACIÓN DE MÁRGENES Y PÁGINA ---
\usepackage[top=2.5cm, bottom=2.5cm, left=2cm, right=2cm]{geometry}
\usepackage[utf8]{utf8}
\usepackage[spanish]{babel}

% --- 2. COLORES PERSONALIZADOS ---
\usepackage{xcolor}
\definecolor{AzulOscuro}{HTML}{1A365D}
\definecolor{AzulBorde}{HTML}{3182CE}
\definecolor{GrisFondo}{HTML}{F7FAFC}
\definecolor{MoradoPoesia}{HTML}{805AD5}
\definecolor{NaranjaRealismo}{HTML}{DD6B20}
\definecolor{TextoGris}{HTML}{4A5568}

% --- 3. PAQUETE PARA CAJAS Y TARJETAS ESTILIZADAS ---
\usepackage[most]{tcolorbox}

% Plantilla base para cada tarjeta de libro
\newtcolorbox{tarjetalibro}[2][AzulBorde]{
    colback=GrisFondo,
    colframe=#1,
    fonttitle=\bfseries\sffamily\Large,
    coltitle=white,
    colbacktitle=#1,
    enhanced,
    attach boxed title to top left={xshift=10pt, yshift=-10pt},
    boxed title style={arc=3pt, boxrule=0pt},
    title=#2,
    arc=4pt,
    boxrule=1.5pt,
    top=15pt,
    bottom=10pt,
    left=12pt,
    right=12pt
}

\setlength{\parindent}{0pt}

\begin{document}

% --- CABECERA ESTILIZADA CON FONDO Y MARGEN EXTENDIDO ---
\begin{tcolorbox}[
    colback=AzulOscuro,
    colframe=AzulOscuro,
    arc=0pt,
    outer arc=0pt,
    top=15pt, bottom=15pt,
    left=15pt, right=15pt
]
    {\color{white}\sffamily\Huge\bfseries Catálogo de Libros} \\[4pt]
    {\color{white!80!black}\sffamily\small Marcado de Presentación y Estilo en LaTeX}
\end{tcolorbox}

\vspace{1em}

% --- LIBRO 1: NOVELA ---
\begin{tarjetalibro}[AzulBorde]{El ingenioso hidalgo don Quijote de la Mancha}
    \textbf{\color{TextoGris}ISBN:} \texttt{978-00-000-0001-1} \hfill \textbf{\color{TextoGris}Año:} 1605 \\
    \textbf{\color{TextoGris}Autor:} Miguel de Cervantes Saavedra \\
    \textbf{\color{TextoGris}Género:} {\color{AzulBorde}\textbf{Novela}}
\end{tarjetalibro}

\vspace{0.8em}

% --- LIBRO 2: REALISMO MÁGICO ---
\begin{tarjetalibro}[NaranjaRealismo]{Cien años de soledad}
    \textbf{\color{TextoGris}ISBN:} \texttt{978-00-000-0002-8} \hfill \textbf{\color{TextoGris}Año:} 1967 \\
    \textbf{\color{TextoGris}Autor:} Gabriel García Márquez \\
    \textbf{\color{TextoGris}Género:} {\color{NaranjaRealismo}\textbf{Realismo mágico}}
\end{tarjetalibro}

\vspace{0.8em}

% --- LIBRO 3: POESÍA (MIGUEL HERNÁNDEZ) ---
\begin{tarjetalibro}[MoradoPoesia]{El rayo que no cesa}
    \textbf{\color{TextoGris}ISBN:} \texttt{978-00-000-0004-2} \hfill \textbf{\color{TextoGris}Año:} 1936 \\
    \textbf{\color{TextoGris}Autor:} Miguel Hernández \\
    \textbf{\color{TextoGris}Género:} {\color{MoradoPoesia}\textbf{Poesía}}
\end{tarjetalibro}

\end{document}

Marcado ligero

Diseñados para ser escritos y leídos fácilmente por humanos sin necesidad de etiquetas complejas, con la posibilidad de convertirlos a otros formatos como HTML o PDF, por ejemplo. Además, se les puede aplicar estilos como se hace en HTML con CSS.

Aquí, podemos presentar varios ejemplos muy conocidos:

  • Markdown, se trata del más conocido entre los lenguajes de marcas ligeros y sencillos. Aquí puedes ver el catálogo de libros escritos usando Markdown:
# Catálogo de Libros

## El ingenioso hidalgo don Quijote de la Mancha
* **ISBN:** `978-00-000-0001-1`
* **Autor:** Miguel de Cervantes Saavedra
* **Año:** 1605
* **Género:** Novela

## Cien años de soledad
* **ISBN:** `978-00-000-0002-8`
* **Autor:** Gabriel García Márquez
* **Año:** 1967
* **Género:** Realismo mágico

## El rayo que no cesa
* **ISBN:** `978-00-000-0004-2`
* **Autor:** Miguel Hernández
* **Año:** 1936
* **Género:** Poesía
  • Wikitext es el lenguaje de marcas usado en la Wikipedia y puedes ver que es muy similar a Markdown:
= Catálogo de Libros =

== El ingenioso hidalgo don Quijote de la Mancha ==
* '''ISBN:''' <code>978-00-000-0001-1</code>
* '''Autor:''' Miguel de Cervantes Saavedra
* '''Año:''' 1605
* '''Género:''' Novela

== Cien años de soledad ==
* '''ISBN:''' <code>978-00-000-0002-8</code>
* '''Autor:''' Gabriel García Márquez
* '''Año:''' 1967
* '''Género:''' Realismo mágico

== El rayo que no cesa ==
* '''ISBN:''' <code>978-00-000-0004-2</code>
* '''Autor:''' Miguel Hernández
* '''Año:''' 1936
* '''Género:''' Poesía
  • Org-mode es un modo de Emacs, un editor de macros, y con él se pueden hacer muchas cosas como escribir documentación al modo en que se hace con Markdown o Wikitext:
* Catálogo de Libros

** El ingenioso hidalgo don Quijote de la Mancha
- ISBN: 978-00-000-0001-1
- Autor: Miguel de Cervantes Saavedra
- Año: 1605
- Género: Novela

** Cien años de soledad
- ISBN: 978-00-000-0002-8
- Autor: Gabriel García Márquez
- Año: 1967
- Género: Realismo mágico

** El rayo que no cesa
- ISBN: 978-00-000-0004-2
- Autor: Miguel Hernández
- Año: 1936
- Género: Poesía

Curiosidad: este documento HTML que estás leyendo ha sido escrito usando org-mode y convertido a HTML.

Para intercambio de información

Los sistemas y programas informáticos intercambian información entre ellos, normalmente a través de redes como Internet, de manera que puedan interoperar entre ellos. Por ejemplo, seguramente usarás tu teléfono móvil para consultar el tiempo que va a hacer los próximos días. Estas aplicaciones reciben la información del tiempo de servicios web que envían a la app de tu móvil esa información por medio de documentos escritos usando lenguajes de marcas como XML o archivos JSON.

API (Application Programming Interface):

En el párrafo anterior se ha descrito, sin mencionarlo, una tecnología muy utilizada en ciencias de computación y, en especial, en el mundo de la programación de aplicaciones: API. Una API es la interfaz o contrato en la comunicación entre dos sistemas (las hay web, como en el ejemplo del párrafo anterior, pero también las hay de otros tipos).

  • XML sería el primer lenguaje de marcas que os traigo aquí como ejemplo de lenguaje de marcas que se puede usar para el intercambio de información. Fue la primera elección hace muchos años y, aunque hoy en día está siendo desplazada por JSON, todavía se sigue usando. Siguiendo con nuestro ejemplo, el XML que ya os mostré al principio de este apartado, puede ser de nuevo traido aquí como ejemplo que pudiera ser usado por una API para enviar información de un catálogo de libros:
<?xml version="1.0" encoding="UTF-8"?>
<catalogo_libros>
    <libro isbn="978-00-000-0001-1">
        <titulo>El ingenioso hidalgo don Quijote de la Mancha</titulo>
        <autor>
            <nombre>Miguel</nombre>
            <apellidos>de Cervantes Saavedra</apellidos>
        </autor>
        <publicacion_año>1605</publicacion_año>
        <genero>Novela</genero>
    </libro>

    <libro isbn="978-00-000-0002-8">
        <titulo>Cien años de soledad</titulo>
        <autor>
            <nombre>Gabriel</nombre>
            <apellidos>García Márquez</apellidos>
        </autor>
        <publicacion_año>1967</publicacion_año>
        <genero>Realismo mágico</genero>
    </libro>

    <libro isbn="978-00-000-0004-2">
        <titulo>El rayo que no cesa</titulo>
        <autor>
            <nombre>Miguel</nombre>
            <apellidos>Hernández</apellidos>
        </autor>
        <publicacion_año>1936</publicacion_año>
        <genero>Poesía</genero>
    </libro>
</catalogo_libros>
  • JSON es hoy por hoy el estándar de facto utilizado por las API para intercambiar información. JSON no es en sí mismo un lenguaje de marcas sino un lenguaje para estructurar información de forma jerárquica. Aquí te muestro el ejemplo del catálogo de libros en formato JSON:
[
  {
    "isbn": "978-00-000-0001-1",
    "titulo": "El ingenioso hidalgo don Quijote de la Mancha",
    "autor": {
      "nombre": "Miguel",
      "apellidos": "de Cervantes Saavedra"
    },
    "publicacion_año": 1605,
    "genero": "Novela"
  },
  {
    "isbn": "978-00-000-0002-8",
    "titulo": "Cien años de soledad",
    "autor": {
      "nombre": "Gabriel",
      "apellidos": "García Márquez"
    },
    "publicacion_año": 1967,
    "genero": "Realismo mágico"
  },
  {
    "isbn": "978-00-000-0004-2",
    "titulo": "El rayo que no cesa",
    "autor": {
      "nombre": "Miguel",
      "apellidos": "Hernández"
    },
    "publicacion_año": 1936,
    "genero": "Poesía"
  }
]

Para configuraciones

El uso de ficheros de configuración ha sido una necesidad constante a lo largo de la evolución de las ciencias de la computación. Desde el principio se necesitó mantener y almacenar de alguna manera parámetros de funcionamiento de aplicaciones, servidores y todo tipo de herramientas. Esto siempre se hizo por medio de archivos de texto plano. Con el transcurrir de los años fueron apareciendo formatos estructurados y formales para este cometido llegando al día de hoy donde encontramos básicamente tres formatos, a saber: JSON, YAML y TOML.

  • JSON es uno de los lenguajes preferidos para almacenar configuraciones. Imagina que queremos mantener la información de un servidor en JSON:
{
  "nombre_app": "MiServidorWeb",
  "puerto": 8080,
  "modo_depuracion": true,
  "base_datos": {
    "host": "localhost",
    "puerto": 5432
  }
}
  • YAML (YAML Ain't Markup Language) es el estándar indiscutible en herramientas de despliegue, la nube y contenedores (como Docker o Kubernetes). Destaca por no usar llaves ni comas, sino sangrías (indentación) para definir la jerarquía:
nombre_app: MiServidorWeb
puerto: 8080
modo_depuracion: true

base_datos:
  host: localhost
  puerto: 5432
  • TOML (Tom's Obvious, Minimal Language) fue diseñado específicamente para ser minimalista y sin ambigüedades en archivos de configuración. Es ampliamente utilizado en gestores de paquetes como Cargo (Rust) o Poetry/Pyproject (Python):
nombre_app = "MiServidorWeb"
puerto = 8080
modo_depuracion = true

[base_datos]
host = "localhost"
puerto = 5432

Author: Román Ginés Martínez Ferrández

Created: 2026-08-08 sáb 16:20

Validate