B3-T8: HTML5, CSS3, XML y Lenguajes de Marcas

Este tema combina dos áreas: (1) HTML5+CSS3 para desarrollo web frontend y (2) lenguajes de marcas/intercambio de datos (XML, JSON, YAML). Ambas aparecen consistentemente en el examen TAI.

HTML5

Fuente: WHATWG HTML Living Standard (html.spec.whatwg.org) — estándar vivo, público. W3C HTML5 Recommendation (w3.org/TR/html5).

ARQUITECTURA WEB Y MOTORES DE NAVEGADOR

NavegadorMotor de renderizadoMotor JavaScript
ChromeBlinkV8
Edge (Chromium)BlinkV8
FirefoxGeckoSpiderMonkey
SafariWebKitJavaScriptCore (Nitro)
OperaBlinkV8

ETIQUETAS SEMÁNTICAS HTML5

EtiquetaFunciónReemplaza
<header>Cabecera de la página o de una sección<div id="header">
<nav>Bloque de enlaces de navegación principal<div id="nav">
<main>Contenido principal del documento (único por página)<div id="content">
<section>Sección temática genérica con encabezado<div class="section">
<article>Contenido independiente y reutilizable (post, noticia)<div class="post">
<aside>Contenido tangencial (sidebar, notas)<div id="sidebar">
<footer>Pie de página o de sección<div id="footer">
<figure> + <figcaption>Contenido autocontenido con leyenda (imagen, gráfico, código)
<details> + <summary>Elemento desplegable nativo (disclosure widget)JavaScript manual
<mark>Texto resaltado<span class="highlight">
<time>Fecha/hora con atributo datetime para máquinas
Tip examen: Las etiquetas semánticas mejoran SEO (los buscadores entienden la estructura) y accesibilidad (los lectores de pantalla navegan por landmarks).

ETIQUETAS MULTIMEDIA HTML5

EtiquetaFunciónAtributos clave
<audio>Reproducir audio nativocontrols, autoplay, loop, muted, preload
<video>Reproducir vídeo nativocontrols, autoplay, poster, width, height
<source>Múltiples formatos para audio/vídeosrc, type (MIME)
<canvas>Dibujo 2D/3D programático (API JavaScript)width, height. Contexto: getContext('2d') o WebGL
<svg>Gráficos vectoriales escalables (XML inline)Elementos: <circle>, <rect>, <path>, <text>

FORMULARIOS HTML5

Tipo inputDescripciónValidación nativa
emailCampo email con validación de formatoSí (patrón de email)
urlURL válida
telTeléfono (teclado numérico en móvil)No (solo UX)
numberNúmero con spinnermin, max, step
rangeSlidermin, max, step
date, time, datetime-localSelectores de fecha/hora nativos
colorSelector de color
searchCampo de búsqueda (UX: botón borrar)No
Atributo de validaciónFunción
requiredCampo obligatorio
pattern="regex"Validación con expresión regular
min / maxValor mínimo/máximo
minlength / maxlengthLongitud mínima/máxima
placeholderTexto de ayuda dentro del campo
autofocusFoco automático al cargar
autocompleteSugerencias del navegador

ATRIBUTOS HTML5 GLOBALES

AtributoFunción
data-*Atributos personalizados. Accesibles vía element.dataset en JS
contenteditableHace el elemento editable por el usuario
draggablePermite arrastrar el elemento (Drag and Drop API)
hiddenOculta el elemento (equivale a display: none)
tabindexOrden de tabulación (-1 = excluir, 0 = orden natural, n = orden explícito)
roleRol ARIA para accesibilidad
aria-*Atributos ARIA (accesibilidad)

APIs HTML5

Fuente: WHATWG HTML Living Standard, W3C WebSocket API (w3.org/TR/websockets), W3C Web Workers (w3.org/TR/workers).

Flexbox — Ejes (trampa frecuente examen)

📌 TRAMPA EXAMEN (pregunta ds08_bas_021): align-content actúa sobre el eje transversal (cross axis), NO sobre el eje principal. El eje principal es responsabilidad de justify-content.
PropiedadEjeDescripción
justify-contentEje principal (main axis)Dirección del flex-direction (por defecto: horizontal)
align-itemsEje transversal (cross axis)Alineación de items en el eje perpendicular al principal
align-contentEje transversal (cross axis)Solo cuando hay múltiples líneas (flex-wrap activo)
APIFunciónDetalle clave
Web StorageAlmacenamiento clave-valor en el navegadorlocalStorage (persistente) vs sessionStorage (sesión de pestaña). ~5-10 MB
IndexedDBBase de datos NoSQL en el navegadorAlmacenamiento estructurado, índices, transacciones. Sin límite práctico
Web WorkersEjecución JavaScript en hilo separadoNo acceden al DOM. Comunicación vía postMessage()
Service WorkersProxy programable entre app y redBase de PWAs. Caché offline, push notifications, background sync
WebSocketComunicación bidireccional full-duplexProtocolo ws:// / wss://. Conexión persistente. Baja latencia
GeolocationObtener ubicación del usuarionavigator.geolocation.getCurrentPosition(). Requiere permiso
Canvas 2D / WebGLDibujo 2D y gráficos 3DCanvas = bitmap. WebGL = OpenGL ES en el navegador
Drag and DropArrastrar y soltar elementosEventos: dragstart, dragover, drop. dataTransfer object
History APIManipular historial del navegadorpushState(), replaceState(), popstate event. Base de SPA routing
Notifications APINotificaciones del sistemaNotification.requestPermission(). Push via Service Workers
Pregunta recurrente: localStorage persiste entre sesiones. sessionStorage solo durante la pestaña. Web Workers NO pueden acceder al DOM.

DOM (Document Object Model)

ConceptoDescripción
Qué esAPI W3C que representa el documento HTML/XML como un árbol de nodos
Nodo raízdocument
Tipos de nodoElement, Text, Attribute, Comment, Document, DocumentFragment
SeleccióngetElementById(), querySelector(), querySelectorAll(), getElementsByClassName()
ManipulacióncreateElement(), appendChild(), removeChild(), textContent, innerHTML
EventosaddEventListener(). Fases: CapturingTargetBubbling
Event delegationUn listener en el padre captura eventos de hijos (bubbling)

CSS3

Fuente: W3C CSS Specifications (w3.org/Style/CSS). CSS3 se modularizó: cada módulo tiene su propia especificación y nivel.

DONDE SE APLICA CSS (Cascada)

MétodoCómoPrioridad
Inline<p style="color:red">Más alta (1,0,0,0)
Internal<style> en el <head>Normal
External<link rel="stylesheet" href="style.css">Normal (preferido)
!importantcolor: red !important;Máxima (override todo)

SELECTORES CSS

SelectorEjemploEspecificidad
Universal*0,0,0,0
Tipo (elemento)p, div, h10,0,0,1
Clase.clase0,0,1,0
ID#identificador0,1,0,0
Atributo[type="text"], [href^="https"]0,0,1,0
Descendientediv p (p dentro de div, cualquier nivel)Suma
Hijo directodiv > p (p hijo directo de div)Suma
Hermano adyacenteh2 + p (p inmediatamente después de h2)Suma
Hermanos generalesh2 ~ p (todos los p después de h2)Suma
Especificidad (de mayor a menor): inline style > ID > clase/atributo/pseudoclase > tipo/pseudoelemento > universal. En caso de empate, gana el último declarado.

PSEUDOCLASES Y PSEUDOELEMENTOS

Pseudoclase (:)Selecciona
:hoverElemento con el ratón encima
:focusElemento con foco (teclado)
:activeElemento siendo pulsado
:visitedEnlace ya visitado
:first-child / :last-childPrimer/último hijo
:nth-child(n)Hijo en posición n (acepta fórmulas: 2n, odd, even)
:not(selector)Negación: todos excepto el selector
:checkedCheckbox/radio marcado
:disabled / :enabledEstado del formulario
:is() / :where()Agrupación de selectores (CSS4). :is() tiene especificidad; :where() no
Pseudoelemento (::)Genera/selecciona
::beforeContenido generado antes del elemento (requiere content)
::afterContenido generado después del elemento
::first-linePrimera línea de texto
::first-letterPrimera letra (drop caps)
::placeholderTexto placeholder de inputs
::selectionTexto seleccionado por el usuario
Tip examen: Pseudoclase = un solo dos puntos (:) — selecciona estado. Pseudoelemento = dos dos puntos (::) — genera o selecciona parte del elemento.

MODELO CAJA (Box Model)

Capa (de dentro a fuera)PropiedadDescripción
Contentwidth / heightEl contenido real (texto, imagen)
PaddingpaddingEspacio interior (entre contenido y borde). Hereda background
BorderborderBorde visible del elemento
MarginmarginEspacio exterior (entre este elemento y los demás). Transparente
box-sizingwidth/height incluye
content-box (default)Solo el content. Padding + border se suman
border-box (recomendado)Content + padding + border. Más intuitivo

POSICIONAMIENTO (position)

ValorFlujoReferenciaUso
staticNormal (default)Comportamiento por defecto
relativeNormal + desplazamientoSu posición originalAjuste fino, base para absolute
absoluteFuera del flujoAncestro posicionado más cercano (no static)Popups, tooltips, overlays
fixedFuera del flujoViewportHeaders/menús fijos al hacer scroll
stickyNormal hasta umbral, luego fijoContenedor + viewportHeaders que se pegan al hacer scroll

DISPLAY: FLEX Y GRID

Propiedad FlexValor/Función
display: flexActiva Flexbox en el contenedor
flex-directionrow (default) | column | row-reverse | column-reverse
justify-contentAlineación en eje principal: flex-start, center, space-between, space-around, space-evenly
align-itemsAlineación en eje transversal: stretch, center, flex-start, flex-end, baseline
flex-wrapnowrap (default) | wrap | wrap-reverse
gapEspacio entre items
flex: grow shrink basisShorthand: flex: 1 0 auto
Propiedad GridValor/Función
display: gridActiva Grid en el contenedor
grid-template-columnsDefine columnas: 1fr 2fr 1fr, repeat(3, 1fr), auto-fill
grid-template-rowsDefine filas
grid-gap / gapEspacio entre celdas
grid-column / grid-rowPosicionar item: grid-column: 1 / 3 (ocupa 2 columnas)
grid-template-areasNombrar áreas: "header header" "sidebar main" "footer footer"
Flex = 1 dimensión (fila O columna). Grid = 2 dimensiones (filas Y columnas). No son excluyentes: se combinan (Grid para layout, Flex para componentes).

RESPONSIVE DESIGN Y MEDIA QUERIES

ConceptoDescripción
Media Query@media (max-width: 768px) { ... }
Viewport meta<meta name="viewport" content="width=device-width, initial-scale=1.0">
Mobile FirstEstilos base para móvil, @media (min-width) para pantallas más grandes
Container QueriesCSS4: @container (min-width: 400px) { ... }. Responsive al contenedor, no al viewport
Breakpoints comunesDispositivo
max-width: 480pxMóviles
max-width: 768pxTablets (portrait)
max-width: 1024pxTablets (landscape) / laptops pequeños
min-width: 1200pxEscritorio

UNIDADES CSS

TipoUnidadReferencia
AbsolutaspxPíxel CSS (1/96 pulgada)
cm, mm, inCentímetros, milímetros, pulgadas
ptPuntos (1/72 pulgada). Usado en impresión
RelativasemRelativo al font-size del elemento padre
remRelativo al font-size del <html> (root em)
%Relativo al contenedor padre
vw / vh1% del ancho/alto del viewport
frFracción del espacio disponible (solo Grid)

VARIABLES CSS (Custom Properties)

ConceptoSintaxis
Declarar:root { --color-primary: #3498db; }
Usarcolor: var(--color-primary);
Fallbackcolor: var(--color-primary, blue);
ScopeHeredan en cascada. Se pueden redefinir por selector

CASCADA Y HERENCIA CSS

Orden de la cascada (de menor a mayor prioridad)
1. Estilos del navegador (user-agent stylesheet)
2. Estilos del usuario
3. Estilos del autor (CSS externo/interno)
4. Estilos del autor con !important
5. Estilos del usuario con !important
Propiedad heredadaPropiedad NO heredada
color, font-family, font-size, line-height, text-align, visibilitymargin, padding, border, width, height, background, display, position

XML Y LENGUAJES DE INTERCAMBIO

Fuente: W3C XML 1.0 Specification (w3.org/TR/xml), XML Schema (w3.org/TR/xmlschema-1), RFC 8259 (JSON), yaml.org/spec.

XML FUNDAMENTOS

ConceptoDescripción
Qué eseXtensible Markup Language. Metalenguaje para definir lenguajes de marcas
W3CEstándar W3C desde 1998. Versión actual: XML 1.0 (5th Edition)
Declaración<?xml version="1.0" encoding="UTF-8"?>
Case sensitiveSí — <Tag><tag>
Entidades predefinidas&lt; (<), &gt; (>), &amp; (&), &quot; ("), &apos; (')
CDATA<![CDATA[ texto sin escapar ]]> — contenido literal
Namespacexmlns:prefix="URI" — evita colisiones de nombres

BIEN FORMADO vs VÁLIDO

ConceptoRequisitos
Bien formado (well-formed)Sigue las reglas sintácticas XML: un solo elemento raíz, etiquetas cerradas, anidación correcta, atributos entrecomillados
Válido (valid)Bien formado Y cumple una gramática (DTD o XSD)
Pregunta clave: Todo documento válido es bien formado, pero no todo bien formado es válido. "Válido" requiere conformidad con un DTD o XSD.

DTD vs XSD

AspectoDTDXSD (XML Schema)
SintaxisPropia (no XML)XML
Tipos de datosMuy limitadosRicos: string, integer, date, boolean, decimal, etc.
NamespacesNo soporta
HerenciaNo (extensión y restricción de tipos)
ExpresividadBaja (ELEMENT, ATTLIST)Alta (simpleType, complexType, sequence, choice, minOccurs, maxOccurs)
EstándarW3C (parte de XML)W3C (XML Schema 1.0/1.1)
Indicador XSDFunción
xs:sequenceHijos en orden estricto
xs:choiceUno de los hijos (OR)
xs:allTodos los hijos, en cualquier orden
minOccurs / maxOccursCardinalidad. maxOccurs="unbounded" = sin límite
xs:simpleTypeTipo simple (solo texto, sin hijos ni atributos)
xs:complexTypeTipo complejo (puede tener hijos y/o atributos)

APIs DE PROGRAMACIÓN XML

APIModeloMemoriaAccesoCuándo usar
DOMÁrbol en memoriaAlto (carga todo)Lectura + escritura, randomDocumentos pequeños/medianos, manipulación
SAXEventos (callbacks)Bajo (streaming)Solo lectura, secuencialDocumentos grandes, solo lectura
StAXPull parsing (iterador)Bajo (streaming)Solo lectura, secuencial, controlado por appDocumentos grandes, control del parseo
JAXBBinding (Java ↔ XML)MedioMarshalling / UnmarshallingMapeo automático clases Java ↔ XML

XPath

ExpresiónSelecciona
/Raíz del documento
//libroTodos los elementos libro en cualquier nivel
/libreria/libro[1]Primer libro hijo de libreria
//libro[@idioma='es']Libros con atributo idioma="es"
//libro/titulo/text()Texto de los títulos
..Nodo padre
@atributoSelecciona un atributo

XSLT (Transformaciones)

ConceptoDescripción
Qué esLenguaje de transformación XML → otro formato (HTML, XML, texto)
MotorProcesador XSLT aplica plantillas (templates) al documento fuente
Elementos clavexsl:template match="...", xsl:value-of select="...", xsl:for-each, xsl:if, xsl:choose
Uso actualLegacy en la mayoría de contextos; sustituido por JSON + templates en el frontend

JSON (JavaScript Object Notation)

Fuente: RFC 8259 (IETF), ECMA-404 (JSON Data Interchange Standard).
Tipo JSONEjemplo
Objeto{ "clave": "valor" }
Array[1, 2, 3]
String"texto" (siempre comillas dobles)
Number42, 3.14, -1, 1.5e10
Booleantrue, false
Nullnull
JSON vs XMLJSONXML
FormatoLigero, clave-valorVerboso, etiquetas
Tipos de datos6 tipos nativosTodo es texto (tipos vía XSD)
ComentariosNoSí (<!-- -->)
SchemaJSON Schema (draft)DTD / XSD (maduro)
Uso principalAPIs REST, configuraciónSOAP, documentos, legacy

YAML

CaracterísticaDescripción
Qué es"YAML Ain't Markup Language". Formato de serialización basado en indentación
Superset de JSONTodo JSON válido es YAML válido
SintaxisClave-valor con :, listas con -, anidación por indentación (espacios, NO tabs)
ComentariosSí (#)
Multi-documentoSeparador ---
Uso principalKubernetes, Docker Compose, GitHub Actions, Ansible, configuración


FUENTES PÚBLICAS

Este resumen ha sido elaborado íntegramente a partir de fuentes de dominio público. No se ha utilizado material con copyright de terceros ni material de preparadores.
FuenteTipoReferencia
WHATWG HTML Living StandardEstándarhtml.spec.whatwg.org
W3C CSS SpecificationsEstándarw3.org/Style/CSS
W3C XML 1.0 SpecificationEstándarw3.org/TR/xml
W3C XML SchemaEstándarw3.org/TR/xmlschema-1
RFC 8259 — JSONEstándarIETF
YAML 1.2 SpecificationEstándaryaml.org/spec/1.2
MDN Web DocsDocumentación comunitariadeveloper.mozilla.org (CC BY-SA)

¿Quieres practicar este tema con tests?

MIMIR tiene más de 5.000 preguntas verificadas, simulacros con penalización real y chat IA que resuelve tus dudas sobre este tema.

Abrir MIMIR gratis →