code: def get_list_transformer(namespaces):
      
      return Transformer(
          '//list[namespace-uri()="%s"]' % namespaces.get(
              'text'
          )
      ).attr(
          '{0}id'.format(XML_NS),
          lambda *args: "list{0}".format(uuid4().hex)
      )
docs: this function returns a transformer to
       find all list elements and recompute their xml:id.
      Because if we duplicate lists we create invalid XML.
      Each list must have its own xml:id
  
      This is important if you want to be able to reopen the produced
       document wih an XML parser. LibreOffice will fix those ids itself
       silently, but lxml.etree.parse will bork on such duplicated lists