Below 2 files represent the same structure.
I call the S expression representation of the markup language
(especially with HTML) SEML and this package provides
the major mode and utility for that file.

SEML is *short* and *easy to understand* for Lisp hacker.

#+begin_src seml
  (html ((lang . "en"))
    (head nil
      (meta ((charset . "utf-8")))
      (title nil "sample page")
      (link ((rel . "stylesheet") (href . "sample1.css"))))
    (body nil
      (h1 nil "sample")
      (p nil "text sample")))
#+end_src

#+begin_src html
  <!DOCTYPE html>
  <html lang="en">
    <head>
      <meta charset="utf-8"/>
      <title>sample page</title>
      <link rel="stylesheet" href="sample1.css"/>
    </head>
    <body>
      <h1>sample</h1>
      <p>
        text sample
      </p>
    </body>
  </html>
#+end_src

More information at [[https://github.com/conao3/seml-mode.el][github]]

Sample configuration with [[https://github.com/conao3/leaf.el][leaf.el]]

  (leaf seml-mode :ensure t)