Cómo convertir Markdown a HTML en Oracle APEX con APEX_MARKDOWN

¿Qué es Markdown?
Markdown es un lenguaje de marcado ligero, diseñado para escribir texto con formato sin necesidad de código HTML.
Es simple, rápido y fácil de leer incluso sin procesar.
Ejemplo básico
Markdown:
# Título
## Subtítulo
**negrita**, *cursiva*
- Lista 1
- Lista 2
HTML generado:
<h1>Título</h1>
<h2>Subtítulo</h2>
<strong>negrita</strong>
<ul><li>Lista 1</li><li>Lista 2</li></ul>
Por eso es ideal para:
Documentación
Notas técnicas
Blogs
Wikis
Comentarios y descripciones
El soporte para Markdown dentro de Oracle APEX se volvió una herramienta extremadamente útil para quienes desean agregar contenido dinámico, limpio y bien formateado sin escribir HTML a mano.
Gracias al paquete nativo APEX_MARKDOWN, podemos convertir fácilmente Markdown → HTML seguro y mostrarlo en cualquier página.
En este artículo te mostraré:

Cómo usar Markdown en Static Content
Cómo almacenarlo en tablas y renderizarlo dinámicamente
Cómo construir una mini-wiki interna en tu aplicación APEX
Vamos por partes.
1. Usar Markdown en regiones Static Content
Las regiones Static Content permiten escribir HTML, pero también pueden procesar Markdown si usamos PL/SQL o un Dynamic Action.
La forma más sencilla es usar una región tipo Dynamic Content para convertir Markdown → HTML en tiempo real.
Ejemplo
Crea una región Dynamic Content
En el código coloca:
declare
l_md clob := '
# Bienvenido a mi aplicación
Renderizado con **Markdown**
';
begin
return apex_markdown.to_html(l_md);
end;
Resultado: un contenido HTML perfectamente renderizado sin escribir una sola etiqueta <h1>, <strong>, <ul>, etc.

2. Guardar Markdown en tablas y mostrarlo dinámicamente
Este es el uso más poderoso: almacenar contenido Markdown en la base, y dejar que APEX lo convierta en HTML cada vez que alguien lo consulta.
Crear una tabla para Markdown
CREATE TABLE notas (
id NUMBER GENERATED ALWAYS AS IDENTITY,
titulo VARCHAR2(200),
contenido_md CLOB,
creado_el DATE DEFAULT SYSDATE,
PRIMARY KEY (id)
);
Formulario para cargar contenido
Crea un formulario automático sobre la tabla.
El campo contenido_md será un Textarea donde escribir Markdown.
Listar notas con Markdown procesado
Crea un Interactive Report o Classic Report con la consulta:
select
id,
titulo,
apex_markdown.to_html(contenido_md) as contenido_html,
creado_el
from notas
En la columna contenido_html marca:
- Escape special characters → NO (importantísimo)
Esto permite mostrar el HTML generado por TO_HTML.

3. Construir una mini-wiki dentro de Oracle APEX
Este es un caso de uso muy práctico para intranets, documentación de proyectos, manuales de usuario, etc.
La idea:
cada página de la wiki se guarda como un registro con Markdown
cada vez que un usuario accede, el sistema convierte Markdown → HTML
se pueden agregar enlaces entre páginas fácilmente
Estructura de ejemplo
CREATE TABLE wiki_paginas (
id NUMBER GENERATED ALWAYS AS IDENTITY,
slug VARCHAR2(200) UNIQUE,
titulo VARCHAR2(200),
contenido_md CLOB,
actualizado_el DATE DEFAULT SYSDATE,
PRIMARY KEY (id)
);
El slug sirve como identificador amigable para la URL.
INSERT INTO wiki_paginas (slug, titulo, contenido_md)
VALUES (
'instalacion',
'Guía de Instalación',
'# Instalación de la Aplicación
Sigue estos pasos para instalar la aplicación:
1. Descargar los archivos del repositorio
2. Crear la base de datos en Oracle
3. Configurar ORDS y APEX
4. Importar el archivo de la aplicación
5. Probar el login inicial
'
);
INSERT INTO wiki_paginas (slug, titulo, contenido_md)
VALUES (
'configuracion',
'Configuración Inicial',
'# Configuración Inicial
Antes de empezar, asegúrate de:
- Configurar usuarios y roles
- Ajustar parámetros de correo
- Revisar conexiones a la base de datos
- Activar logs y auditoría
'
);
INSERT INTO wiki_paginas (slug, titulo, contenido_md)
VALUES (
'uso_basico',
'Uso Básico de la Aplicación',
'# Uso Básico
## Crear un registro
- Acceder al módulo correspondiente
- Hacer clic en "Nuevo"
- Completar los campos requeridos
- Guardar y verificar
## Editar un registro
- Seleccionar el registro
- Hacer clic en "Editar"
- Modificar los datos
- Guardar cambios
'
);
INSERT INTO wiki_paginas (slug, titulo, contenido_md)
VALUES (
'faq',
'Preguntas Frecuentes',
'# FAQ - Preguntas Frecuentes
## ¿Cómo recupero mi contraseña?
Ve a la pantalla de login y haz clic en "Olvidé mi contraseña".
## ¿Puedo exportar datos?
Sí, utiliza la opción "Exportar" disponible en los reportes.
'
);
Listado principal de páginas
Consulta:
select
titulo,
slug,
actualizado_el
from wiki_paginas
order by titulo;
Página para visualizar una página de la wiki
Región Dynamic Content:

declare
l_md clob;
begin
select contenido_md into l_md
from wiki_paginas
where (id = :P22_LISTA);
return apex_markdown.to_html(l_md);
end;
Podemos agregar una lista de valores para ir navegando en la wiki
select
slug,
id
from wiki_paginas
order by titulo;

Al ejecutar tendriamos este conportamiento
Conclusión
Con APEX_MARKDOWN podés:
mostrar contenido elegante en regiones Static Content
almacenar Markdown en tablas y renderizarlo como HTML
construir una mini-wiki interna sin escribir HTML
ofrecer editores con preview en tiempo real
mantener documentación y notas dentro de tu app sin dependencias externas
Es simple, seguro y muy poderoso.
Si te gustó este artículo comentame que te parecio y si aprendiste algo nuevo, podés darle “Follow“ al blog, compartir la publicación o incluso invitarme un café así seguimos creando más contenido sobre Oracle APEX.






