예제 #1
0
 def query(self, name):
     """ blindly query the schema by name """
     log.debug('searching schema for (%s)', name)
     schema = self.schema
     wsdl = self.wsdl()
     if wsdl is None:
         qref = qualify(name, schema.root, schema.tns)
     else:
         qref = qualify(name, wsdl.root, wsdl.tns)
     query = BlindQuery(qref)
     result = query.execute(schema)
     return (result, [])
예제 #2
0
 def query(self, name, node):
     """ blindly query the schema by name """
     log.debug('searching schema for (%s)', name)
     qref = qualify(name, node, node.namespace())
     query = BlindQuery(qref)
     result = query.execute(self.schema)
     return (result, [])
예제 #3
0
 def known(self, node):
     """ resolve type referenced by @xsi:type """
     ref = node.get('type', Namespace.xsins)
     if ref is None:
         return None
     qref = qualify(ref, node, node.namespace())
     query = BlindQuery(qref)
     return query.execute(self.schema)
예제 #4
0
 def qualify(self, name):
     """
     Qualify the name as either:
       - plain name
       - ns prefixed name (eg: ns0:Person)
       - fully ns qualified name (eg: {http://myns-uri}Person)
     @param name: The name of an object in the schema.
     @type name: str
     @return: A qualifed name.
     @rtype: qname
     """
     m = self.altp.match(name)
     if m is None:
         return qualify(name, self.wsdl.root, self.wsdl.tns)
     else:
         return (m.group(4), m.group(2))
예제 #5
0
 def find(self, name, resolved=True):
     """
     Get the definition object for the schema object by name.
     @param name: The name of a schema object.
     @type name: basestring
     @param resolved: A flag indicating that the fully resolved type
         should be returned.
     @type resolved: boolean
     @return: The found schema I{type}
     @rtype: L{xsd.sxbase.SchemaObject}
     """
     log.debug('searching schema for (%s)', name)
     qref = qualify(name, self.schema.root, self.schema.tns)
     query = BlindQuery(qref)
     result = query.execute(self.schema)
     if result is None:
         log.error('(%s) not-found', name)
         return None
     log.debug('found (%s) as (%s)', name, Repr(result))
     if resolved:
         result = result.resolve()
     return result