🎯 Objetivos de la sesión
- Comprender qué es un lenguaje de marcas y sus tipos.
- Conocer la evolución histórica: GML → SGML → HTML → XML → JSON/YAML.
- Distinguir lenguajes descriptivos (semánticos) frente a procedimentales.
- Escribir documentos XML bien formados: elementos, atributos, comentarios, entidades.
- Conocer el ecosistema XML (DTD, XSD, XSLT) y alternativas modernas.
¿Qué es un lenguaje de marcas?
1.1 — Definición
Un lenguaje de marcas (markup language) es un sistema de anotaciones que se inserta en un texto para dar estructura y significado a su contenido, separando la información de la forma en que se presenta o procesa.
La idea central: "marca" = etiqueta que envuelve o señala una parte del documento. El texto plano se convierte en datos estructurados legibles por máquinas.
1.2 — Tipos de lenguajes de marcas
| Tipo | Qué describe | Ejemplos |
|---|---|---|
| Procedimentales | CÓMO se presenta: indican instrucciones de formato al procesador. | TEX, troff, RTF (históricos) |
| Descriptivos / semánticos | QUÉ es cada parte del contenido: estructura y significado, no apariencia. | XML, HTML, SGML, JSON, YAML |
<!-- Procedural: "pon en negrita" -->
Texto importante
<!-- Descriptivo: "esto es un título de nivel 1" -->
<h1>Factura 2026/09</h1>
1.3 — Línea histórica
- 1969 · GML (Goldfarb, Mosher, Lorie — IBM): origen del concepto de marcas descriptivas.
- 1986 · SGML: estandarizado por ISO (ISO 8879). Meta-lenguaje muy potente pero complejo.
- 1991 · HTML: Berners-Lee deriva una aplicación sencilla de SGML para la Web. Sirve para presentar documentos.
- 1998 · XML: simplificación de SGML (W3C) para almacenar y transportar datos. El estándar del intercambio de información.
- 2000s · JSON: notación nativa de JavaScript, hoy dominante en APIs web.
- 2010s+ · YAML: legibilidad máxima, muy usado en configuración (Docker, Kubernetes, CI/CD).
1.4 — Comparativa rápida de los grandes
| Propósito | ¿Etiquetas predefinidas? | Rigidez sintáctica | |
|---|---|---|---|
| HTML | Presentar páginas web | Sí, vocabulario fijo (<p>, <a>…) | Permisiva (los navegadores "arreglan" errores) |
| XML | Almacenar/intercambiar datos | No: tú defines tus propias etiquetas | Estricta: debe estar bien formado |
| JSON | Datos en objetos/arreglos | Sintaxis {}, [] | Estricta |
| YAML | Configuración legible | Sintaxis indentación | Muy estricta con sangrías |
XML en profundidad: reglas y ecosistema
2.1 — Documento XML bien formado
Un documento XML es bien formado si cumple estas reglas sintácticas:
- Prolog: comienza opcionalmente con
<?xml version="1.0" encoding="UTF-8"?>. - Un único elemento raíz que contiene a todos los demás.
- Toda etiqueta que se abre se cierra:
<aula>...</aula>. O bien son vacías:<imagen ruta="foto.png"/>. - Las etiquetas se anidan correctamente (no se cruzan):
<b><i>x</i></b>✅,<b><i>x</b></i>❌. - Los nombres distinguen mayúsculas/minúsculas:
<Aula>≠<aula>. - Los valores de atributos van entre comillas.
- Los caracteres especiales se escapan con entidades:
<< ·>> ·&& ·"" ·''
2.2 — Elementos vs. atributos
<?xml version="1.0" encoding="UTF-8"?>
<biblioteca>
<libro id="L-001" disponible="true">
<titulo>Fundamentos de XML</titulo>
<autor>Ana García</autor>
<precio moneda="EUR">24.50</precio>
</libro>
</biblioteca>
• Elemento: contenedor de datos (puede repetirse y anidarse).
• Atributo: dato simple en la etiqueta de apertura (metadato, identificador, unidad…).
2.3 — Validación: DTD y XML Schema (XSD)
- Bien formado → respeta la sintaxis XML. (Basta con cualquier parseador.)
- Válido → además respeta un esquema que define qué elementos, atributos y tipos de datos se permiten.
DTD (Document Type Definition): sintaxis propia, valida estructura pero no tipos de datos. XSD (XML Schema Definition): sintaxis XML, valida estructura y tipos (int, date, decimal, enumeraciones…).
2.4 — Tecnologías del ecosistema XML
| Tecnología | Función |
|---|---|
| XPath | Lenguaje de rutas para seleccionar nodos: /biblioteca/libro/titulo |
| XSLT | Transforma XML a otro XML, HTML o texto (diseño declarativo con plantillas). |
| DOM | Modelo de objetos del documento; carga el árbol completo en memoria. |
| SAX | Análisis secuencial por eventos; eficiente con documentos grandes. |
| Namespaces | Evitan colisiones de nombres: <xhtml:table> vs <libros:table> |
2.5 — XML vs. JSON vs. YAML
/* XML */ /* JSON */ # YAML
<alumno> { alumno:
<nombre>Lucía</nombre> "nombre":"Lucía", nombre: Lucía
<nota>8.5</nota> "nota":8.5 nota: 8.5
</alumno> } asignaturas:
- LMSGI
- BD
| Criterio | XML | JSON | YAML |
|---|---|---|---|
| Verboso | Mucho | Medio | Poco |
| Autodescriptivo / comentarios | Sí / Sí | Medio / No | Sí / Sí |
| Validación con esquema | DTD, XSD | JSON Schema | JSON Schema |
| Uso típico | Facturación (Facturae), SVG, doc. técnica | APIs REST, AJAX | Configuración (Docker, K8s, pipelines) |
💻 Práctica de aula (últimos 20 min)
<raiz>
<item id=1>Dato & mas</item>
<item>Otro dato
</raiz>
Ver solución
Errores: atributo sin comillas; & sin escapar (&); etiqueta <item> sin cerrar. Correcto:
<item id="1">Dato & mas</item><item>Otro dato</item>
📌 Resumen de la sesión
- Los lenguajes de marcas estructuran y dan significado a la información; los descriptivos (XML, HTML) dominan hoy sobre los procedimentales.
- Evolución: GML → SGML → HTML y XML → JSON/YAML.
- XML exige documentos bien formados (raíz única, etiquetas cerradas, entidades) y opcionalmente válidos frente a DTD/XSD.
- El ecosistema XML: XPath, XSLT, DOM/SAX, Namespaces.
- JSON y YAML triunfan en APIs y configuración por su ligereza; XML sigue siendo estándar en documentación y facturación electrónica.
Próxima sesión: HTML5 y CSS — anatomía de una página web semántica.