(use-modules (sxml simple))
(use-modules (ice-9 match))

; define a template
(define template
   (quote
     (html
         (head (title "test"))
         (body
             (h1 "test")
             (message "the header")
             (p "it " (em "works!")
               (br)
               (" it actually works!"))))))

; transform it
(define template2
 (let loop
  ((l template))
  (match l
    (('message a ...)
      `(p (@ (style "margin-left: 2em"))
            (strong ,(map loop a))))
    ((a ...)
      (map loop a ))
    (a
      a))))

; write xml to the output port
(sxml->xml template2)

(newline)