コード例 #1
0
ファイル: __init__.py プロジェクト: ostrovok-team/suds04
def qualify(ref, resolvers, defns=Namespace.default):
    """
    Get a reference that is I{qualified} by namespace.
    @param ref: A referenced schema type name.
    @type ref: str
    @param resolvers: A list of objects to be used to resolve types.
    @type resolvers: [L{sax.element.Element},]
    @param defns: An optional target namespace used to qualify references
        when no prefix is specified.
    @type defns: A default namespace I{tuple: (prefix,uri)} used when ref not prefixed.
    @return: A qualified reference.
    @rtype: (name, namespace-uri)
    """
    ns = None
    p, n = splitPrefix(ref)
    if p is not None:
        if not isinstance(resolvers, (list, tuple)):
            resolvers = (resolvers,)
        for r in resolvers:
            resolved = r.resolvePrefix(p)
            if resolved[1] is not None:
                ns = resolved
                break
        if ns is None:
            raise Exception('prefix (%s) not resolved' % p)
    else:
        ns = defns
    return (n, ns[1])
コード例 #2
0
ファイル: resolver.py プロジェクト: ostrovok-team/suds04
 def leaf(self, parent, parts):
     """
     Find the leaf.
     @param parts: A list of path parts.
     @type parts: [str,..]
     @param parent: The leaf's parent.
     @type parent: L{xsd.sxbase.SchemaObject}
     @return: The leaf.
     @rtype: L{xsd.sxbase.SchemaObject}
     """
     name = splitPrefix(parts[-1])[1]
     if name.startswith('@'):
         result, path = parent.get_attribute(name[1:])
     else:
         result, ancestry = parent.get_child(name)
     if result is None:
         raise PathResolver.BadPath(name)
     return result
コード例 #3
0
ファイル: schema.py プロジェクト: ostrovok-team/suds04
 def builtin(self, ref, context=None):
     """
     Get whether the specified reference is an (xs) builtin.
     @param ref: A str or qref.
     @type ref: (str|qref)
     @return: True if builtin, else False.
     @rtype: bool 
     """
     w3 = 'http://www.w3.org'
     try:
         if isqref(ref):
             ns = ref[1]
             return ( ref[0] in Factory.tags and ns.startswith(w3) )
         if context is None:
             context = self.root    
         prefix = splitPrefix(ref)[0]
         prefixes = context.findPrefixes(w3, 'startswith')
         return ( prefix in prefixes and ref[0] in Factory.tags )
     except:
         return False
コード例 #4
0
ファイル: resolver.py プロジェクト: ostrovok-team/suds04
 def branch(self, root, parts):
     """
     Traverse the path until the leaf is reached.
     @param parts: A list of path parts.
     @type parts: [str,..]
     @param root: The root.
     @type root: L{xsd.sxbase.SchemaObject}
     @return: The end of the branch.
     @rtype: L{xsd.sxbase.SchemaObject}
     """
     result = root
     for part in parts[1:-1]:
         name = splitPrefix(part)[1]
         log.debug('searching parent (%s) for (%s)', Repr(result), name)
         result, ancestry = result.get_child(name)
         if result is None:
             log.error('(%s) not-found', name)
             raise PathResolver.BadPath(name)
         else:
             result = result.resolve(nobuiltin=True)
             log.debug('found (%s) as (%s)', name, Repr(result))
     return result