Haml (XHTML Abstraction Markup Language) – język znaczników używany do prostego i przejrzystego opisywania XHTML. Został stworzony, aby obejść wiele niedoskonałości tradycyjnych systemów szablonów używając zarazem eleganckiej składni. Głównym zadaniem Hamla jest zastąpienie dotychczasowych systemów szablonów, jak PHP, RHTML czy ASP.
Odpowiednikiem Hamla dla CSS jest Sass, który jest rozpowszechniany razem z Hamlem.
Przykład zastosowania !!! %html{ :xmlns => "http://www.w3.org/1999/xhtml", :lang => "en", 'xml:lang' => "en" } %head %title BoBlog %meta{ 'http-equiv' => 'Content-Type', :content => 'text/html; charset=utf-8' }/ = stylesheet_link_tag 'main' %body #header %h1 BoBlog %h2 Bob's Blog #content - @entries.each do |entry| .entry %h3.title= entry.title %p.date= entry.posted.strftime("%A, %B %d, %Y") %p.body= entry.body #footer %p All content copyright © Bob
W rezultacie da XHTML: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'> <head> <title>BoBlog</title> <meta content='text/html;