(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)