There is a reason why both elm and mercury uses virtual-dom under the hood to generate and manipulate the DOM.
Plus you can render server-side: https://github.com/nthtran/vdom-to-html
If you still want to work with existing html like templates, there is this project: https://github.com/TimBeyer/html-to-vdom