text: #
  # Ensure that all headings are below a permissible maximum (like h3).
  # If not, all heading levels will be changed to conform.
  # Note: this may create "illegal" heading levels, like h7 and beyond.
  #
  
  import sys
  from xml.dom import minidom, XHTML_NAMESPACE
  
  # determine permissible minimimum heading
  if '--min' in sys.argv:
    minhead = int(sys.argv[sys.argv.index('--min')+1])
  else:
    minhead=3
  
  # parse input stream
  doc = minidom.parse(sys.stdin)
  
  # search for headings below the permissable minimum
  first=minhead
  for i in range(1,minhead):
    if doc.getElementsByTagName('h%d' % i):
      first=i
      break
  
  # if found, bump all headings so that the top is the permissible minimum
  if first < minhead:
    for i in range(6,0,-1):
      for oldhead in doc.getElementsByTagName('h%d' % i):
        newhead = doc.createElementNS(XHTML_NAMESPACE, 'h%d' % (i+minhead-first))
        for child in oldhead.childNodes[:]:
          newhead.appendChild(child)
        oldhead.parentNode.replaceChild(newhead, oldhead)
  
  # return (possibly modified) document
  print(doc.toxml('utf-8'))
  