コード例 #1
0
ファイル: __init__.py プロジェクト: richshaffer/tornado-suds
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
ファイル: schema.py プロジェクト: richshaffer/tornado-suds
 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