######################################################################## # $Header: /var/local/cvsroot/4Suite/Ft/Xml/XPath/ParsedAbbreviatedAbsoluteLocationPath.py,v 1.7 2005/03/07 02:25:58 mbrown Exp $ """ A parsed token that represents an abbreviated absolute location path. Copyright 2005 Fourthought, Inc. (USA). Detailed license and copyright information: http://4suite.org/COPYRIGHT Project home, documentation, distributions: http://4suite.org/ """ from xml.dom import Node from Ft.Lib.Set import Unique class ParsedAbbreviatedAbsoluteLocationPath: def __init__(self, rel): self._rel = rel return def _descendants(self, context, nodeset): for child in context.node.childNodes: context.node = child results = self._rel.select(context) # Ensure no duplicates if results: nodeset.extend(results) nodeset = Unique(nodeset) if child.nodeType == Node.ELEMENT_NODE: nodeset = self._descendants(context, nodeset) return nodeset def evaluate(self, context): state = context.copy() # Start at the document node context.node = context.node.rootNode nodeset = self._descendants(context, self._rel.select(context)) context.set(state) return nodeset select = evaluate def pprint(self, indent=''): print indent + str(self) self._rel.pprint(indent + ' ') def __str__(self): return '' % ( id(self), repr(self) ) def __repr__(self): return '//%r' % self._rel