@param node: An xml node to be resolved. @type node: L{sax.element.Element} @param resolved: A flag indicating that the fully resolved type should be returned. @type resolved: boolean @param push: Indicates that the resolved type should be
(self, node, resolved=False, push=True)
| 319 | TreeResolver.__init__(self, schema) |
| 320 | |
| 321 | def find(self, node, resolved=False, push=True): |
| 322 | """ |
| 323 | @param node: An xml node to be resolved. |
| 324 | @type node: L{sax.element.Element} |
| 325 | @param resolved: A flag indicating that the fully resolved type should |
| 326 | be returned. |
| 327 | @type resolved: boolean |
| 328 | @param push: Indicates that the resolved type should be |
| 329 | pushed onto the stack. |
| 330 | @type push: boolean |
| 331 | @return: The found schema I{type} |
| 332 | @rtype: L{xsd.sxbase.SchemaObject} |
| 333 | """ |
| 334 | name = node.name |
| 335 | parent = self.top().resolved |
| 336 | if parent is None: |
| 337 | result, ancestry = self.query(name, node) |
| 338 | else: |
| 339 | result, ancestry = self.getchild(name, parent) |
| 340 | known = self.known(node) |
| 341 | if result is None: |
| 342 | return result |
| 343 | if push: |
| 344 | frame = Frame(result, resolved=known, ancestry=ancestry) |
| 345 | self.push(frame) |
| 346 | if resolved: |
| 347 | result = result.resolve() |
| 348 | return result |
| 349 | |
| 350 | def findattr(self, name, resolved=True): |
| 351 | """ |