docs: def CreateFromDocument(xml_text, default_namespace=None, location_base=None):
      """Parse the given XML and use the document element to create a Python instance.
  
      @param xml_text An XML document.  This should be data (Python 2
      str or Python 3 bytes), or a text (Python 2 unicode or Python 3
      str) in the L{pyxb._InputEncoding} encoding.
  
      @keyword default_namespace The L{pyxb.Namespace} instance to use as the
      default namespace where there is no default namespace in scope.
      If unspecified or C{None}, the namespace of the module containing
      this function will be used.
  
      @keyword location_base: An object to be recorded as the base of all
      L{pyxb.utils.utility.Location} instances associated with events and
      objects handled by the parser.  You might pass the URI from which
      the document was obtained.
  
      """
  
      if pyxb.XMLStyle_saxer != pyxb._XMLStyle:
          dom = pyxb.utils.domutils.StringToDOM(xml_text)
          return CreateFromDOM(dom.documentElement, default_namespace=default_namespace)
      if default_namespace is None:
          default_namespace = Namespace.fallbackNamespace()
      saxer = pyxb.binding.saxer.make_parser(
          fallback_namespace=default_namespace, location_base=location_base
      )
      handler = saxer.getContentHandler()
      xmld = xml_text
      if isinstance(xmld, pyxb.utils.six.text_type):
          xmld = xmld.encode(pyxb._InputEncoding)
      saxer.parse(io.BytesIO(xmld))
      instance = handler.rootObject()
      return instance