docs: def parse_xml_node(self, node):
          '''Parse an xml.dom Node object representing a preceding condition into
          this object.
  
          '''
          super(Preceding, self).parse_xml_node(node)
          p_nodes = node.getElementsByTagNameNS(RTS_NS, 'Preceding')
          if p_nodes.length != 1:
              raise InvalidParticipantNodeError
          p_node = p_nodes[0]
          if p_node.hasAttributeNS(RTS_NS, 'timeout'):
              self.timeout = int(p_node.getAttributeNS(RTS_NS, 'timeout'))
          else:
              self.timeout = 0
          if p_node.hasAttributeNS(RTS_NS, 'sendingTiming'):
              self.sending_timing = p_node.getAttributeNS(RTS_NS, 'sendingTiming')
          else:
              self.sending_timing = 'ASYNC'
          self._preceding_components = []
          for c in p_node.getElementsByTagNameNS(RTS_NS, 'PrecedingComponents'):
              self._preceding_components.append(TargetExecutionContext().parse_xml_node(c))
          return self