docs: def fromxml(node):
          """Static method return an OutputTemplate instance from the given XML description. Node can be a string or an etree._Element."""
          if not isinstance(node,ElementTree._Element): #pylint: disable=protected-access
              node = parsexmlstring(node)
          assert node.tag.lower() == 'outputtemplate'
  
          template_id = node.attrib['id']
          dataformat = node.attrib['format']
          label = node.attrib['label']
          kwargs = {}
          if 'filename' in node.attrib:
              kwargs['filename'] = node.attrib['filename']
          if 'extension' in node.attrib:
              kwargs['extension'] = node.attrib['extension']
          if 'unique' in node.attrib:
              kwargs['unique'] = node.attrib['unique'].lower() == 'yes' or node.attrib['unique'].lower() == 'true' or node.attrib['unique'].lower() == '1'
          if 'parent' in node.attrib:
              kwargs['parent'] = node.attrib['parent']
  
          #find formatclass
          formatcls = None
          for C in CUSTOM_FORMATS: #CUSTOM_FORMATS will be injected by clamservice.py
              if C.__name__ == dataformat:
                  formatcls = C
                  break
          if formatcls is None:
              if dataformat in vars(clam.common.formats):
                  formatcls = vars(clam.common.formats)[dataformat]
              else:
                  raise Exception("Specified format not defined! (" + dataformat + ")")
  
          args = []
          for subnode in node:
              if subnode.tag == 'parametercondition':
                  args.append(ParameterCondition.fromxml(subnode))
              elif subnode.tag == 'converter':
                  pass #MAYBE TODO: Reading converters from XML is not implemented (and not necessary at this stage)
              elif subnode.tag == 'viewer':
                  pass #MAYBE TODO: Reading viewers from XML is not implemented (and not necessary at this stage)
              else:
                  args.append(AbstractMetaField.fromxml(subnode))
  
          return OutputTemplate(template_id,formatcls,label, *args, **kwargs)