La próxima generación de marcado para Web5 y WebAI

Inspirado en JSON y DSL, seguro por diseño, ideal para IA y la web descentralizada

La web como entidad inteligente comienza aquí.

¿Qué es – y qué NO es?

JML (JSON-Inspired Markup Language) es un lenguaje de marcado innovador inspirado en la estructura JSON y los principios DSL, diseñado para Ascoos OS y la web moderna.

Su objetivo es ofrecer una alternativa ligera, segura y fácil de usar al HTML tradicional, con énfasis en compatibilidad con IA, descentralización (Web5) y sintaxis mínima.

En resumen

Es

  • Marcado DSL inspirado en JSON
  • Basado en AST desde la raíz
  • 16–40% más pequeño que HTML
  • Zero-trust y seguro contra XSS
  • Ideal para WebAI / agentes
  • Totalmente nativo UTF-8
  • Con macros semánticas y extensiones

No es

  • Marcado nativo del navegador
  • Motor de plantillas (Twig/Pug)
  • Sustituto simple de JSON
  • Lenguaje de programación

JML vs HTML – Comparación 2026

CaracterísticaJMLHTML5
Tamaño (Hello World minificado)64 caracteres108 caracteres
Con meta + viewport177 caracteres212 caracteres
Reducción promedio16–40%
BoilerplateNingunoDOCTYPE, head, body...
Seguridad XSSSeguro (AST)Depende
Lógica ejecutable (macros)No
CifradoSí (WIC)No
Nativo en navegadorNo (extensión)

AST – El corazón de JML

JML no es solo marcado. Es un DSL con AST nativo – el marcado del 2030, disponible hoy.

Permite macros semánticas, transformaciones, depuración y seguridad sin XSS.

Visualización del Árbol de Sintaxis Abstracta

Ejemplo de estructura AST – permite validación, macros y renderizado seguro

Prueba JML ahora

JML (Sintaxis compacta)
html {
  head {
    meta:charset('UTF-8')
    link:rel('stylesheet'),href('https://cdn.ascoos.com/bootlib/css/bootlib.min.css')
  }
  body:class('dark-theme') {
    h1{`¡Bienvenido a JML!`}
    p{`Marcado ligero para Ascoos OS.`}
  }
}
HTML equivalente
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="https://cdn.ascoos.com/bootlib/css/bootlib.min.css">
</head>
<body class="dark-theme">
    <h1>¡Bienvenido a JML!</h1>
    <p>Marcado ligero para Ascoos OS.</p>
</body>
</html>

JML (izquierda) produce exactamente el mismo HTML (derecha) – con un 17% menos caracteres.

JML Studio y código auxiliar generado

DSL (Lenguaje específico de dominio)
TAG html
  TAG head
    TAG meta CHARSET 'UTF-8'
    TAG link REL 'stylesheet' HREF 'https://cdn.ascoos.com/bootlib/css/bootlib.min.css'
  TAG body CLASS 'dark-theme'
    TAG h1
      TEXT '¡Bienvenido a JML!'
    TAG p
      TEXT 'Marcado ligero para Ascoos OS.'
AST (Árbol de sintaxis abstracta)
{
  "type": "group",
  "name": null,
  "value": null,
  "attributes": [],
  "children": [
    {
      "type": "tag",
      "name": "html",
      "value": null,
      "attributes": [],
      "children": [
        {
          "type": "tag",
          "name": "head",
          "value": null,
          "attributes": [],
          "children": [
            {
              "type": "tag",
              "name": "meta",
              "value": null,
              "attributes": [
                {
                  "type": "attribute",
                  "name": "charset",
                  "value": "UTF-8",
                  "attributes": [],
                  "children": []
                }
              ],
              "children": []
            },
            {
              "type": "tag",
              "name": "link",
              "value": null,
              "attributes": [
                {
                  "type": "attribute",
                  "name": "rel",
                  "value": "stylesheet",
                  "attributes": [],
                  "children": []
                },
                {
                  "type": "attribute",
                  "name": "href",
                  "value": "https://cdn.ascoos.com/bootlib/css/bootlib.min.css",
                  "attributes": [],
                  "children": []
                }
              ],
              "children": []
            }
          ]
        },
        {
          "type": "tag",
          "name": "body",
          "value": null,
          "attributes": [
            {
              "type": "attribute",
              "name": "class",
              "value": "dark-theme",
              "attributes": [],
              "children": []
            }
          ],
          "children": [
            {
              "type": "tag",
              "name": "h1",
              "value": null,
              "attributes": [],
              "children": [
                {
                  "type": "content",
                  "name": null,
                  "value": "¡Bienvenido a JML!",
                  "attributes": [],
                  "children": []
                }
              ]
            },
            {
              "type": "tag",
              "name": "p",
              "value": null,
              "attributes": [],
              "children": [
                {
                  "type": "content",
                  "name": null,
                  "value": "Marcado ligero para Ascoos OS.",
                  "attributes": [],
                  "children": []
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Ambos formatos generados, DSL (izquierda) y AST (derecha), están estructurados para uso en WebAI.

Renderizado del lado del servidor

<?php
/**
 * @ASCOOS-NAME        : Ascoos OS
 * @ASCOOS-VERSION     : 26.0.0
 * @ASCOOS-SUPPORT     : support@ascoos.com
 * @ASCOOS-BUGS        : https://issues.ascoos.com
 *
 * @CASE-STUDY          : jml_to_html_renderer.php
 * @fileNo              : ASCOOS-OS-CASESTUDY-SEC00268
 *
 * @desc Parses JML syntax into HTML using THTML, generates full page from nested structure.
 *
 * @since PHP 8.2.0
 */
declare(strict_types=1);
use ASCOOS\OS\Kernel\HTML\THTML;
use ASCOOS\OS\Kernel\Files\TFilesHandler;
$properties = [
    'output' => './generated_page.html'
];
try {
    $html = new THTML();
    $files = new TFilesHandler();
    // JML as string.
    $jmlString = <<<'JML'
html:lang('en') {
  head {
    meta:charset('UTF-8')
    meta:name('viewport'),content('width=device-width, initial-scale=1.0')
    title {`Advanced Sample Page`}
    style {
      `.container {
            max-width: 1200px;
            margin: 0 auto;
            padding: 20px;
            background-color: #f4f4f4;
        }
        .header {
            text-align: center;
            color: #333;
            padding: 10px;
            border-bottom: 2px solid #000;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-group label {
            display: block;
            font-weight: bold;
        }
        .form-group input, .form-group select {
            width: 100%;
            padding: 8px;
            margin-top: 5px;
        }`
    }
    script {
      `function validateForm() {
            let name = document.getElementById("name").value;
            let email = document.getElementById("email").value;
            if (name === "" || email === "") {
                alert("Please fill out all fields!");
                return false;
            }
            return true;
        }`
    }
  }
  body {
    div:class('container') {
      div:class('header') {
        h1 {`Welcome to Ascoos OS Demo`}
        p {`This is a complex demo with nested elements and interactivity.`}
      }
      div:class('content') {
        h2 {`User Registration`}
        form:onsubmit('return validateForm()'),method('POST'),action('/submit') {
          div:class('form-group') {
            label:for('name') {`Name:`}
            input:type('text'),id('name'),name('name'),required('')
          }
          div:class('form-group') {
            label:for('email') {`Email:`}
            input:type('email'),id('email'),name('email'),required('')
          }
          div:class('form-group') {
            label:for('country') {`Country:`}
            select:id('country'),name('country') {
              option:value('us') {`United States`}
              option:value('gr') {`Greece`}
              option:value('de') {`Germany`}
            }
          }
          button:type('submit') {`Submit`}
        }
        br
        div:class('footer') {
          p {`© 2025 Ascoos OS. All rights reserved.`}
          br
          a:href('https://ascoos.com') {`Visit our site`}
        }
      }
    }
  }
}
JML;
    $fullHtml = $html->fromJMLString($jmlString);
    $output = '' . $fullHtml;
    $files->writeToFileWithCheck($output, $properties['output']);
    echo "JML Parsed! Generated HTML:\n";
    echo $output . "\n";
    echo "Saved to: " . $properties['output'] . "\n";
    $html->Free();
    $files->Free();
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
}
?>

Con el renderizador PHP, genera HTML al vuelo para sitios dinámicos sin boilerplate.

Ascoos JML Renderer – Extensión de navegador

¡Instala esta extensión ligera y convierte cualquier página web en lista para JML: renderizado del lado del cliente sin dependencias!

Documentos JML completos

Renderiza <script type="text/jml"> como documento HTML completo.

Bloques JML inline

Incrusta <jml> ... </jml> dentro de HTML existente.

Soporte para tags vacíos y anidados

br, hr, img, input + bloques anidados, atributos, texto multilínea.

JS puro – sin dependencias

Funciona en cualquier página (local/remota), compatible con Manifest V3.

La extensión es ligera (26 KB), no recolecta datos y funciona al instante – ideal para desarrolladores que quieren experimentar con JML sin configuración.

Hoja de ruta

2026: Condicionales, bucles, macros semánticas v2
2027: Exportación a Markdown/PDF + perfiles de seguridad
2028+: Autoría automática con Ascoos AI

Preguntas frecuentes

¿Es JML compatible con los navegadores existentes?

Sí, a través de un renderizador que produce HTML5 limpio. No se requieren cambios en el navegador.

¿Cómo maneja JML los scripts y estilos?

Soporta scripts/estilos inline y enlaces externos, con escape nativo para seguridad.

¿Puedo usarlo con frameworks como React?

Sí, mediante conversión JML → JSX o análisis directo a componentes personalizados.