Τι είναι - Τι ΔΕΝ είναι;
Το JML (JSON-Inspired Markup Language) είναι μια καινοτόμα γλώσσα σήμανσης εμπνευσμένη από τη δομή JSON και DSL, σχεδιασμένη για το Ascoos OS και το σύγχρονο web.
Στόχος του είναι να προσφέρει μια ελαφριά, ασφαλή και εύκολη στη χρήση εναλλακτική στο παραδοσιακό HTML, με έμφαση στην AI-compatibility, την αποκέντρωση (Web5) και την ελάχιστη σύνταξη.
Συνοπτικά
Είναι
ΔΕΝ είναι
JML vs HTML – Σύγκριση 2026
| Χαρακτηριστικό | JML | HTML5 |
|---|---|---|
| Μέγεθος (Hello World minified) | 64 chars | 108 chars |
| Με meta + viewport | 177 chars | 212 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.
Παράδειγμα AST δομής – επιτρέπει validation, macros & ασφαλές rendering
Δοκιμάστε το 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.`}
}
}
<!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 και παραγόμενος βοηθητικός κώδικας
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.'
{
"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
Συχνές Ερωτήσεις
Είναι το JML συμβατό με υπάρχοντα browsers;
Ναι, μέσω renderer που παράγει καθαρό HTML5. Δεν απαιτεί αλλαγές στο browser.
Πώς χειρίζεται το JML τα scripts και styles;
Υποστηρίζει inline scripts/styles και εξωτερικά links, με εγγενή escaping για ασφάλεια.
Μπορώ να το χρησιμοποιήσω με frameworks όπως React;
Ναι, μέσω μετατροπής JML → JSX ή άμεσου parsing σε custom components.