diff options
Diffstat (limited to 'suds/xsd/doctor.py')
-rw-r--r-- | suds/xsd/doctor.py | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/suds/xsd/doctor.py b/suds/xsd/doctor.py index 33ef121..d7bbc14 100644 --- a/suds/xsd/doctor.py +++ b/suds/xsd/doctor.py @@ -22,7 +22,7 @@ schema(s). from logging import getLogger from suds.sax import splitPrefix, Namespace from suds.sax.element import Element -from suds.plugin import DocumentPlugin +from suds.plugin import DocumentPlugin, DocumentContext log = getLogger(__name__) @@ -208,13 +208,19 @@ class ImportDoctor(Doctor, DocumentPlugin): """ self.imports += imports - def examine(self, root): + def examine(self, node): for imp in self.imports: - imp.apply(root) + imp.apply(node) def parsed(self, context): - root = context.document - if Namespace.xsd(root.namespace()): - self.examine(root) - else: - pass
\ No newline at end of file + node = context.document + # xsd root + if node.name == 'schema' and Namespace.xsd(node.namespace()): + self.examine(node) + return + # look deeper + context = DocumentContext() + for child in node: + context.document = child + self.parsed(context) +
\ No newline at end of file |