Η επόμενη γενιά markup για Web5 & WebAI

Εμπνευσμένη από JSON και DSL, ασφαλής από τη βάση της, ιδανική για AI και αποκεντρωμένο web

Το web ως νοητή οντότητα, ξεκινά από εδώ.

Τι είναι - Τι ΔΕΝ είναι;

Το JML (JSON-Inspired Markup Language) είναι μια καινοτόμα γλώσσα σήμανσης εμπνευσμένη από τη δομή JSON και DSL, σχεδιασμένη για το Ascoos OS και το σύγχρονο web.

Στόχος του είναι να προσφέρει μια ελαφριά, ασφαλή και εύκολη στη χρήση εναλλακτική στο παραδοσιακό HTML, με έμφαση στην AI-compatibility, την αποκέντρωση (Web5) και την ελάχιστη σύνταξη.

Συνοπτικά

Είναι

  • JSON-inspired DSL markup
  • AST-based από τη βάση
  • 16–40% μικρότερο από HTML
  • Zero-trust & XSS-safe
  • Ιδανικό για WebAI / agents
  • Πλήρως UTF-8 native
  • Με semantic macros & επεκτάσεις

ΔΕΝ είναι

  • Native browser markup
  • Template engine (Twig/Pug)
  • Απλή αντικατάσταση JSON
  • Γλώσσα προγραμματισμού

JML vs HTML – Σύγκριση 2026

ΧαρακτηριστικόJMLHTML5
Μέγεθος (Hello World minified)64 chars108 chars
Με meta + viewport177 chars212 chars
Μέση μείωση16–40%
BoilerplateΚανέναDOCTYPE, head, body...
XSS ΑσφάλειαΑσφαλές (AST)Εξαρτάται
Executable logic (macros)ΝαιΌχι
ΚρυπτογράφησηΝαι (WIC)Όχι
Browser nativeΌχι (extension)Ναι

AST – Η Καρδιά του JML

Το JML δεν είναι markup. Είναι DSL με εγγενές AST – το markup του 2030, σήμερα.

Επιτρέπει semantic macros, μετατροπές, debugging και ασφάλεια χωρίς XSS.

Abstract Syntax Tree visualization

Παράδειγμα AST δομής – επιτρέπει validation, macros & ασφαλές rendering

Δοκιμάστε το JML τώρα

JML (Συμπαγής Σύνταξη)
html {
  head {
    meta:charset('UTF-8')
    link:rel('stylesheet'),href('https://cdn.ascoos.com/bootlib/css/bootlib.min.css')
  }
  body:class('dark-theme') {
    h1{`Καλώς Ήρθατε στο JML!`}
    p{`Ελαφρύ markup για το Ascoos OS.`}
  }
}
Ισοδύναμο HTML
<!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>Καλώς Ήρθατε στο JML!</h1>
    <p>Ελαφρύ markup για το Ascoos OS.</p>
</body>
</html>

Το JML (αριστερά) παράγει ακριβώς το ίδιο HTML (δεξιά) – με 17% λιγότερους χαρακτήρες.

JML Studio και παραγόμενος βοηθητικός κώδικας

DSL (Domain-Specific Language)
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 'Καλώς Ήρθατε στο JML!'
    TAG p
      TEXT 'Ελαφρύ markup για το Ascoos OS.'
AST (Abstract Syntax Tree)
{
  "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": "Καλώς Ήρθατε στο JML!",
                  "attributes": [],
                  "children": []
                }
              ]
            },
            {
              "type": "tag",
              "name": "p",
              "value": null,
              "attributes": [],
              "children": [
                {
                  "type": "content",
                  "name": null,
                  "value": "Ελαφρύ markup για το Ascoos OS.",
                  "attributes": [],
                  "children": []
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Και τα δύο παραγόμενα φορμά, το DSL (αριστερά) και το AST (δεξιά) είναι δομημένα για χρήση στο WebAI.

Απόδοση από την πλευρά του διακομιστή

<?php
/**
 * @ASCOOS-NAME        : Ascoos OS
 * @ASCOOS-VERSION     : 1.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 <English> Parses JML syntax into HTML using THTML, generates full page from nested structure.
 * @desc <Greek> Αναλύει JML syntax σε HTML μέσω THTML, παράγει πλήρη σελίδα από nested δομή.
 * 
 * @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();

    // -----------------------------------------------------------------------------
    // <English> JML as string.
    // <Greek> JML ως συμβολοσειρά.
    // -----------------------------------------------------------------------------
    $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;

    // -----------------------------------------------------------------------------
    // <English> Parse JML string to HTML
    // <Greek> Ανάλυση συμβολοσειράς JML σε HTML
    // -----------------------------------------------------------------------------
    $fullHtml = $html->fromJMLString($jmlString);
    
    // -----------------------------------------------------------------------------
    // <English> Adds DOCTYPE manually (JML focuses on body).
    // <Greek> Προσθέτει χειροκίνητα το DOCTYPE (το JML επικεντρώνεται στο body).
    // -----------------------------------------------------------------------------
    $output = '<!DOCTYPE html>' . $fullHtml;

    // -----------------------------------------------------------------------------
    // <English> Save to file.
    // <Greek> Αποθήκευση σε αρχείο.
    // -----------------------------------------------------------------------------
    $files->writeToFileWithCheck($output, $properties['output']);
    
    // -----------------------------------------------------------------------------
    // <English> Preview.
    // <Greek> Προεπισκόπηση.
    // -----------------------------------------------------------------------------
    echo "JML Parsed! Generated HTML:\n";
    echo $output . "\n";
    echo "Saved to: " . $properties['output'] . "\n";

    // -----------------------------------------------------------------------------
    // <English> Free resources
    // <Greek> Απελευθέρωση πόρων και χειριστών
    // -----------------------------------------------------------------------------
    $html->Free();
    $files->Free();
    
} catch (Exception $e) {
    echo "Error: " . $e->getMessage() . "\n";
}
?>

Με PHP renderer, παράγει HTML on-the-fly για dynamic sites χωρίς boilerplate.

Ascoos JML Renderer – Επέκταση Browser

Εγκαταστήστε την ελαφριά επέκταση και μετατρέψτε οποιαδήποτε ιστοσελίδα σε JML-ready: client-side rendering χωρίς εξαρτήσεις!

Πλήρη JML έγγραφα

Απόδοση <script type="text/jml"> ως ολόκληρο HTML document.

Inline JML blocks

Ενσωματωμένα <jml> ... </jml> μέσα σε υπάρχον HTML.

Υποστήριξη void tags & nested

br, hr, img, input + εμφωλευμένα blocks, attributes, multiline text.

Καθαρή JS – Χωρίς εξαρτήσεις

Λειτουργεί σε οποιαδήποτε σελίδα (local/remote), Manifest V3 compatible.

Η επέκταση είναι ελαφριά (26 KB), δεν συλλέγει δεδομένα και λειτουργεί άμεσα – ιδανική για developers που θέλουν να πειραματιστούν με JML χωρίς setup.

Roadmap

2026: Conditionals, loops, semantic macros v2
2027: Εξαγωγή σε Markdown/PDF + security profiles
2028+: Αυτόματη συγγραφή με Ascoos AI

Συχνές Ερωτήσεις

Είναι το JML συμβατό με υπάρχοντα browsers;

Ναι, μέσω renderer που παράγει καθαρό HTML5. Δεν απαιτεί αλλαγές στο browser.

Πώς χειρίζεται το JML τα scripts και styles;

Υποστηρίζει inline scripts/styles και εξωτερικά links, με εγγενή escaping για ασφάλεια.

Μπορώ να το χρησιμοποιήσω με frameworks όπως React;

Ναι, μέσω μετατροπής JML → JSX ή άμεσου parsing σε custom components.