functor (Xml : Xml_sigs.Iterable->
  functor
    (Typed_xml : sig
                   module Info : Xml_sigs.Info
                   type 'a elt
                   type doc
                   val toelt : 'a elt -> Xml.elt
                   val doc_toelt : doc -> Xml.elt
                 end->
    functor (E : sig type content end->
      sig
        type page = E.content Typed_xml.elt list
        type options = unit
        type return = Eliom_registration.http_service
        type result =
            Eliom_registration.block_content Eliom_registration.kind
        val register :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          service:('get, 'post, [< Eliom_service.internal_service_kind ],
                   [< Eliom_service.suff ], 'gn, 'pn, [ `Registrable ],
                   [< Eliom_service.non_ocaml_service ])
                  Eliom_service.service ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get -> 'post -> E.content Typed_xml.elt list Lwt.t) -> unit
        val register_service :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?priority:int ->
          path:Eliom_lib.Url.path ->
          get_params:('get, [< Eliom_service.suff ] as 'a, 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get -> unit -> E.content Typed_xml.elt list Lwt.t) ->
          ('get, unit,
           [> `Attached of
                ([> `Internal of [> `Service ] ], [> `Get ])
                Eliom_service.a_s ],
           'a, 'gn, unit, [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_coservice :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          fallback:(unit, unit,
                    [ `Attached of
                        ([ `Internal of [ `Service ] ], [ `Get ])
                        Eliom_service.a_s ],
                    [ `WithoutSuffix ], unit, unit,
                    [< Eliom_service.registrable ],
                    [< Eliom_service.non_ocaml_service ])
                   Eliom_service.service ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get -> unit -> E.content Typed_xml.elt list Lwt.t) ->
          ('get, unit,
           [> `Attached of
                ([> `Internal of [> `Coservice ] ], [> `Get ])
                Eliom_service.a_s ],
           [ `WithoutSuffix ], 'gn, unit,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_coservice' :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get -> unit -> E.content Typed_xml.elt list Lwt.t) ->
          ('get, unit, [> `Nonattached of [> `Get ] Eliom_service.na_s ],
           [ `WithoutSuffix ], 'gn, unit,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_post_service :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?priority:int ->
          fallback:('get, unit,
                    [ `Attached of
                        ([ `Internal of [ `Coservice | `Service ] ],
                         [ `Get ])
                        Eliom_service.a_s ],
                    [< Eliom_service.suff ] as 'a, 'gn, unit,
                    [< `Registrable ], [< Eliom_service.non_ocaml_service ])
                   Eliom_service.service ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get -> 'post -> E.content Typed_xml.elt list Lwt.t) ->
          ('get, 'post,
           [> `Attached of
                ([> `Internal of [ `Coservice | `Service ] ], [> `Post ])
                Eliom_service.a_s ],
           'a, 'gn, 'pn, [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_post_coservice :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          fallback:('get, unit,
                    [ `Attached of
                        ([ `Internal of [< `Coservice | `Service ] ],
                         [ `Get ])
                        Eliom_service.a_s ],
                    [< Eliom_service.suff ] as 'a, 'gn, unit,
                    [< `Registrable ], [< Eliom_service.non_ocaml_service ])
                   Eliom_service.service ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get -> 'post -> E.content Typed_xml.elt list Lwt.t) ->
          ('get, 'post,
           [> `Attached of
                ([> `Internal of [> `Coservice ] ], [> `Post ])
                Eliom_service.a_s ],
           'a, 'gn, 'pn, [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_post_coservice' :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?keep_get_na_params:bool ->
          ?https:bool ->
          post_params:('post, [ `WithoutSuffix ], 'pn)
                      Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          (unit -> 'post -> E.content Typed_xml.elt list Lwt.t) ->
          (unit, 'post, [> `Nonattached of [> `Post ] Eliom_service.na_s ],
           [ `WithoutSuffix ], unit, 'pn,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_put_service :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?priority:int ->
          path:Eliom_lib.Url.path ->
          get_params:('get, [< Eliom_service.suff ] as 'a, 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get ->
           Eliom_parameter.raw_post_data ->
           E.content Typed_xml.elt list Lwt.t) ->
          ('get, Eliom_parameter.raw_post_data,
           [> `Attached of
                ([> `Internal of [> `Service ] ], [> `Put ])
                Eliom_service.a_s ],
           'a, 'gn, Eliom_parameter.no_param_name,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_put_coservice :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          fallback:(unit, Eliom_parameter.raw_post_data,
                    [ `Attached of
                        ([ `Internal of [ `Service ] ], [ `Put ])
                        Eliom_service.a_s ],
                    [ `WithoutSuffix ], unit, Eliom_parameter.no_param_name,
                    [< Eliom_service.registrable ],
                    [< Eliom_service.non_ocaml_service ])
                   Eliom_service.service ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get ->
           Eliom_parameter.raw_post_data ->
           E.content Typed_xml.elt list Lwt.t) ->
          ('get, Eliom_parameter.raw_post_data,
           [> `Attached of
                ([> `Internal of [> `Coservice ] ], [> `Put ])
                Eliom_service.a_s ],
           [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_put_coservice' :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get ->
           Eliom_parameter.raw_post_data ->
           E.content Typed_xml.elt list Lwt.t) ->
          ('get, Eliom_parameter.raw_post_data,
           [> `Nonattached of [> `Put ] Eliom_service.na_s ],
           [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_delete_service :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?https:bool ->
          ?priority:int ->
          path:Eliom_lib.Url.path ->
          get_params:('get, [< Eliom_service.suff ] as 'a, 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get ->
           Eliom_parameter.raw_post_data ->
           E.content Typed_xml.elt list Lwt.t) ->
          ('get, Eliom_parameter.raw_post_data,
           [> `Attached of
                ([> `Internal of [> `Service ] ], [> `Delete ])
                Eliom_service.a_s ],
           'a, 'gn, Eliom_parameter.no_param_name,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_delete_coservice :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          fallback:(unit, Eliom_parameter.raw_post_data,
                    [ `Attached of
                        ([ `Internal of [ `Service ] ], [ `Delete ])
                        Eliom_service.a_s ],
                    [ `WithoutSuffix ], unit, Eliom_parameter.no_param_name,
                    [< Eliom_service.registrable ],
                    [< Eliom_service.non_ocaml_service ])
                   Eliom_service.service ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get ->
           Eliom_parameter.raw_post_data ->
           E.content Typed_xml.elt list Lwt.t) ->
          ('get, Eliom_parameter.raw_post_data,
           [> `Attached of
                ([> `Internal of [> `Coservice ] ], [> `Delete ])
                Eliom_service.a_s ],
           [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val register_delete_coservice' :
          ?scope:[< Eliom_common.scope ] ->
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          ?secure_session:bool ->
          ?name:string ->
          ?csrf_safe:bool ->
          ?csrf_scope:[< Eliom_common.user_scope ] ->
          ?csrf_secure:bool ->
          ?max_use:int ->
          ?timeout:float ->
          ?https:bool ->
          get_params:('get, [ `WithoutSuffix ], 'gn)
                     Eliom_parameter.params_type ->
          ?error_handler:((string * exn) list ->
                          E.content Typed_xml.elt list Lwt.t) ->
          ('get ->
           Eliom_parameter.raw_post_data ->
           E.content Typed_xml.elt list Lwt.t) ->
          ('get, Eliom_parameter.raw_post_data,
           [> `Nonattached of [> `Delete ] Eliom_service.na_s ],
           [ `WithoutSuffix ], 'gn, Eliom_parameter.no_param_name,
           [< Eliom_service.registrable > `Registrable ],
           [> Eliom_service.http_service ])
          Eliom_service.service
        val send :
          ?options:unit ->
          ?charset:string ->
          ?code:int ->
          ?content_type:string ->
          ?headers:Http_headers.t ->
          E.content Typed_xml.elt list ->
          Eliom_registration.block_content Eliom_registration.kind Lwt.t
      end