docs: def getXMLDescription(cliExecutable, **kwargs):
      """Call given cliExecutable with --xml and return xml ElementTree
      representation of standard output.
  
      Any kwargs are passed on to subprocess.Popen() (via popenCLIExecutable())."""
  
      command = [cliExecutable, '--xml']
      
      stdout, stdoutFilename = tempfile.mkstemp('.stdout')
      stderr, stderrFilename = tempfile.mkstemp('.stderr')
      try:
          p = popenCLIExecutable(command, stdout = stdout, stderr = stderr, **kwargs)
          ec = p.wait()
          with open(stderrFilename) as f:
              for line in f:
                  logger.warning('%s: %s' % (os.path.basename(cliExecutable), line[:-1]))
          if ec:
              raise RuntimeError("Calling %s failed (exit code %d)" % (cliExecutable, ec))
          with open(stdoutFilename) as f:
              return ET.parse(f)
      finally:
          os.close(stdout)
          os.close(stderr)
          os.unlink(stdoutFilename)
          os.unlink(stderrFilename)