Most HTML elements1 now have functions of the same name: simply pass the contents as a positional argument, and attributes as keyword arguments, and everything will be returned as an EzXML Document or Node.
import EzXML: prettyprint doc = html( head( title("Kelpie.jl is awesome!"), ), body( header( h1("Dogs are cool"), h2("Julia is cool"), ), main( img(; src="/kelpie-on-sheep-back.jpg", alt="A Kelpie herding sheep" ), [ p("Kelpies make great herding dogs for $animal.") for animal in ["cows", "sheep", "chickens"] ]..., ), ), ) prettyprint(doc)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE html SYSTEM "about:legacy-compat"> <html> <head> <title>Kelpie.jl is awesome!</title> </head> <body> <header> <h1>Dogs are cool</h1> <h2>Julia is cool</h2> </header> <main> <img src="/kelpie-on-sheep-back.jpg" alt="A Kelpie herding sheep" /> <p>Kelpies make great herding dogs for cows.</p> <p>Kelpies make great herding dogs for sheep.</p> <p>Kelpies make great herding dogs for chickens.</p> </main> </body> </html>
Everything is pure Julia, so your imagination is the limit!
divis the division function, and I wanted to leave it that way. To make
<div>s, you need to use