def olist node
result = []
id_attribute = node.id ? %( id="#{node.id}") : nil
classes = ['olist', node.style, node.role].compact
class_attribute = %( class="#{classes * ' '}")
result << %(<div#{id_attribute}#{class_attribute}>)
result << %(<div class="title">#{node.title}</div>) if node.title?
type_attribute = (keyword = node.list_marker_keyword) ? %( type="#{keyword}") : nil
start_attribute = (node.attr? 'start') ? %( start="#{node.attr 'start'}") : nil
reversed_attribute = (node.option? 'reversed') ? (append_boolean_attribute 'reversed', @xml_mode) : nil
result << %(<ol class="#{node.style}"#{type_attribute}#{start_attribute}#{reversed_attribute}>)
node.items.each do |item|
result << '<li>'
result << %(<p>#{item.text}</p>)
result << item.content if item.blocks?
result << '</li>'
end
result << '</ol>'
result << '</div>'
result * LF
end