def _match(self): unmatched1, unmatched2 = TreeMatcher._match(self) # Unravel some ill-matched attributes rewired = [] for pair in self._mapping[:]: n1, n2 = pair if n1.nodeType == Node.ATTRIBUTE_NODE: ppartner = self._get_partner_in_t2(self._tree1.get_parent(n1)) if ppartner != self._tree2.get_parent(n2): self._mapping.remove(pair) unmatched1.append(n1) unmatched2.append(n2) for n1, n2 in [(x,y) for x in unmatched1 for y in unmatched2]: if (n1.nodeType, n2.nodeType) == (Node.ATTRIBUTE_NODE,)*2 and \ self._tree1.get_label(n1) == self._tree2.get_label(n2): ppartner = self._get_partner_in_t2(self._tree1.get_parent(n1)) if ppartner == self._tree2.get_parent(n2): self._map(n1, n2)
def __init__(self, tree1, tree2, f=0.6, t=0.5, script_store=ScriptStore): TreeMatcher.__init__( self, tree1, tree2, f, t, DomTreeIface, script_store)