module Xhtmlforms:XHTMLFORMSSIG
val make_full_string_uri : ?https:bool ->
service:('a, unit, [< Eliom_services.get_service_kind ],
[< Eliom_services.suff ], 'b, unit, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string -> ?port:int -> ?fragment:string -> 'a -> string
Default hostname is determined from the Host
http header of the request
(or the attribute of <host> tag in
configuration file if the option <usedefaulthostname/>
is set).
Default port is the current port (or another port of the server if
you are switching from or to https).
But you can choose the hostname or port you want by setting
the optional ?hostname
and ?port
parameters here.
val make_full_uri : ?https:bool ->
service:('a, unit, [< Eliom_services.get_service_kind ],
[< Eliom_services.suff ], 'b, unit, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string -> ?port:int -> ?fragment:string -> 'a -> XHTML.M.uri
val make_string_uri : ?https:bool ->
service:('a, unit, [< Eliom_services.get_service_kind ],
[< Eliom_services.suff ], 'b, unit, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string -> ?port:int -> ?fragment:string -> 'a -> string
val make_uri : ?https:bool ->
service:('a, unit, [< Eliom_services.get_service_kind ],
[< Eliom_services.suff ], 'b, unit, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string -> ?port:int -> ?fragment:string -> 'a -> XHTML.M.uri
a
function, it may take
extra parameters.val a : ?https:bool ->
?a:Xhtmltypes.a_attrib XHTML.M.attrib list ->
service:('a, unit, [< Eliom_services.get_service_kind ],
[< Eliom_services.suff ], 'b, 'c, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string ->
?port:int ->
?fragment:string ->
Xhtmltypes.a_content XHTML.M.elt list -> 'a -> [> Xhtmltypes.a ] XHTML.M.elt
a service sp cont ()
creates a link to service
.
The text of
the link is cont
. For example cont
may be something like
[pcdata "click here"]
.
The last parameter is for GET parameters.
For example a service sp cont (42,"hello")
The ~a
optional parameter is used for extra attributes
(see the module XHTML.M).
The ~fragment
optional parameter is used for the "fragment" part
of the URL, that is, the part after character "#".
When possible, all links generated by Eliom are relative, for example
to make easier the use with reverse proxies.
But in case of protocol change (if you want to switch to https using
~https:true
for example, or if the service imposes https),
absolute links will be generated.
In that case,
default hostname is determined from the Host
http header of the request
(or the attribute of <host> tag in
configuration file if the option <usedefaulthostname/>
is set).
Default port is the current port (or another port of the server if
you are switching from or to https).
But you can choose the hostname or port you want by setting
the optional ?hostname
and ?port
parameters here.
These options have no effect for relative links.
val css_link : ?a:Xhtmltypes.link_attrib XHTML.M.attrib list ->
uri:XHTML.M.uri -> unit -> [> Xhtmltypes.link ] XHTML.M.elt
<link>
tag for a Cascading StyleSheet (CSS).val js_script : ?a:Xhtmltypes.script_attrib XHTML.M.attrib list ->
uri:XHTML.M.uri -> unit -> [> Xhtmltypes.script ] XHTML.M.elt
<script>
tag to add a javascript fileval get_form : ?https:bool ->
?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
service:('a, unit, [< Eliom_services.get_service_kind ],
[< Eliom_services.suff ], 'b, 'c, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string ->
?port:int ->
?fragment:string ->
('b -> Xhtmltypes.form_content XHTML.M.elt list) ->
[> Xhtmltypes.form ] XHTML.M.elt
get_form service sp formgen
creates a GET form to service
.
The content of
the form is generated by the function formgen
, that takes the names
of the service parameters as parameters.val lwt_get_form : ?https:bool ->
?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
service:('a, unit, [< Eliom_services.get_service_kind ],
[< Eliom_services.suff ], 'b, 'c, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string ->
?port:int ->
?fragment:string ->
('b -> Xhtmltypes.form_content XHTML.M.elt list Lwt.t) ->
Xhtmltypes.form XHTML.M.elt Lwt.t
Eliom_predefmod.Xhtml.lwt_get_form ~service:... ~sp f >>= fun form ->
let form =
(form : Xhtmltypes.form XHTML.M.elt :> [> Xhtmltypes.form ] XHTML.M.elt)
in ...
val post_form : ?https:bool ->
?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
service:('a, 'b, [< Eliom_services.post_service_kind ],
[< Eliom_services.suff ], 'c, 'd, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string ->
?port:int ->
?fragment:string ->
?keep_get_na_params:bool ->
('d -> Xhtmltypes.form_content XHTML.M.elt list) ->
'a -> [> Xhtmltypes.form ] XHTML.M.elt
post_form service sp formgen
creates a POST form to service
.
The last parameter is for GET parameters (as in the function a
).val lwt_post_form : ?https:bool ->
?a:Xhtmltypes.form_attrib XHTML.M.attrib list ->
service:('a, 'b, [< Eliom_services.post_service_kind ],
[< Eliom_services.suff ], 'c, 'd, [< Eliom_services.registrable ])
Eliom_services.service ->
sp:Eliom_sessions.server_params ->
?hostname:string ->
?port:int ->
?fragment:string ->
?keep_get_na_params:bool ->
('d -> Xhtmltypes.form_content XHTML.M.elt list Lwt.t) ->
'a -> Xhtmltypes.form XHTML.M.elt Lwt.t
Eliom_predefmod.Xhtml.lwt_post_form ~service:... ~sp f >>= fun form ->
let form =
(form : Xhtmltypes.form XHTML.M.elt :> [> Xhtmltypes.form ] XHTML.M.elt)
in ...
typebasic_input_type =
[ `Hidden | `Password | `Submit | `Text ]
val int_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
input_type:[< basic_input_type ] ->
?name:[< int Eliom_parameters.setoneradio ] Eliom_parameters.param_name ->
?value:int -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag for an integerval int32_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
input_type:[< basic_input_type ] ->
?name:[< int32 Eliom_parameters.setoneradio ] Eliom_parameters.param_name ->
?value:int32 -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag for a 32 bits integerval int64_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
input_type:[< basic_input_type ] ->
?name:[< int64 Eliom_parameters.setoneradio ] Eliom_parameters.param_name ->
?value:int64 -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag for a 64 bits integerval float_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
input_type:[< basic_input_type ] ->
?name:[< float Eliom_parameters.setoneradio ] Eliom_parameters.param_name ->
?value:float -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag for a floatval string_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
input_type:[< basic_input_type ] ->
?name:[< string Eliom_parameters.setoneradio ] Eliom_parameters.param_name ->
?value:string -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag for a stringval user_type_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
input_type:[< basic_input_type ] ->
?name:[< 'a Eliom_parameters.setoneradio ] Eliom_parameters.param_name ->
?value:'a -> ('a -> string) -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag for a user typeval raw_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
input_type:[< `Button | `Hidden | `Password | `Reset | `Submit | `Text ] ->
?name:string -> ?value:string -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag. You may use the name you want
(for example to use with Eliom_parameters.any
).val file_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:[< Ocsigen_extensions.file_info Eliom_parameters.setoneradio ]
Eliom_parameters.param_name ->
unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag for sending a fileval image_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:[< Eliom_parameters.coordinates Eliom_parameters.oneradio ]
Eliom_parameters.param_name ->
?src:XHTML.M.uri -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input type="image" name="...">
tag that sends the coordinates
the user clicked onval int_image_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:[< (int * Eliom_parameters.coordinates) Eliom_parameters.oneradio ]
Eliom_parameters.param_name ->
value:int -> ?src:XHTML.M.uri -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input type="image" name="..." value="...">
tag that sends
the coordinates the user clicked on and a value of type intval int32_image_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:[< (int32 * Eliom_parameters.coordinates) Eliom_parameters.oneradio ]
Eliom_parameters.param_name ->
value:int32 -> ?src:XHTML.M.uri -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input type="image" name="..." value="...">
tag that sends
the coordinates the user clicked on and a value of type int32val int64_image_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:[< (int64 * Eliom_parameters.coordinates) Eliom_parameters.oneradio ]
Eliom_parameters.param_name ->
value:int64 -> ?src:XHTML.M.uri -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input type="image" name="..." value="...">
tag that sends
the coordinates the user clicked on and a value of type int64val float_image_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:[< (float * Eliom_parameters.coordinates) Eliom_parameters.oneradio ]
Eliom_parameters.param_name ->
value:float -> ?src:XHTML.M.uri -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input type="image" name="..." value="...">
tag that sends
the coordinates the user clicked on and a value of type floatval string_image_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:[< (string * Eliom_parameters.coordinates) Eliom_parameters.oneradio ]
Eliom_parameters.param_name ->
value:string -> ?src:XHTML.M.uri -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input type="image" name="..." value="...">
tag that sends
the coordinates the user clicked on and a value of type stringval user_type_image_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:[< ('a * Eliom_parameters.coordinates) Eliom_parameters.oneradio ]
Eliom_parameters.param_name ->
value:'a ->
?src:XHTML.M.uri -> ('a -> string) -> [> Xhtmltypes.input ] XHTML.M.elt
<input type="image" name="..." value="...">
tag that sends
the coordinates the user clicked on and a value of user defined typeval raw_image_input : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
name:string ->
value:string -> ?src:XHTML.M.uri -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input type="image" name="..." value="...">
tag that sends
the coordinates the user clicked on and an untyped valueval bool_checkbox : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `One of bool ] Eliom_parameters.param_name ->
unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag that will have a boolean value.
The service must declare a bool
parameter.val int_checkbox : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Set of int ] Eliom_parameters.param_name ->
value:int -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag that will have an int value.
Thus you can do several checkboxes with the same name
(and different values).
The service must declare a parameter of type set
.val int32_checkbox : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Set of int32 ] Eliom_parameters.param_name ->
value:int32 -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag that will have an int32 value.
Thus you can do several checkboxes with the same name
(and different values).
The service must declare a parameter of type set
.val int64_checkbox : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Set of int64 ] Eliom_parameters.param_name ->
value:int64 -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag that will have an int64 value.
Thus you can do several checkboxes with the same name
(and different values).
The service must declare a parameter of type set
.val float_checkbox : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Set of float ] Eliom_parameters.param_name ->
value:float -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag that will have a float value.
Thus you can do several checkboxes with the same name
(and different values).
The service must declare a parameter of type set
.val string_checkbox : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Set of string ] Eliom_parameters.param_name ->
value:string -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag that will have a string value.
Thus you can do several checkboxes with the same name
(and different values).
The service must declare a parameter of type set
.val user_type_checkbox : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Set of 'a ] Eliom_parameters.param_name ->
value:'a -> ('a -> string) -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag that will have a "user type" value.
Thus you can do several checkboxes with the same name
(and different values).
The service must declare a parameter of type set
.val raw_checkbox : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:string -> value:string -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag with untyped content.
Thus you can do several checkboxes with the same name
(and different values).
The service must declare a parameter of type any
.val string_radio : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Radio of string ] Eliom_parameters.param_name ->
value:string -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag with string contentval int_radio : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Radio of int ] Eliom_parameters.param_name ->
value:int -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag with int contentval int32_radio : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Radio of int32 ] Eliom_parameters.param_name ->
value:int32 -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag with int32 contentval int64_radio : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Radio of int64 ] Eliom_parameters.param_name ->
value:int64 -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag with int64 contentval float_radio : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Radio of float ] Eliom_parameters.param_name ->
value:float -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag with float contentval user_type_radio : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:[ `Radio of 'a ] Eliom_parameters.param_name ->
value:'a -> ('a -> string) -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag with user_type contentval raw_radio : ?a:Xhtmltypes.input_attrib XHTML.M.attrib list ->
?checked:bool ->
name:string -> value:string -> unit -> [> Xhtmltypes.input ] XHTML.M.elt
<input>
tag with untyped string content (low level)typebutton_type =
[ `Button | `Reset | `Submit ]
val string_button : ?a:Xhtmltypes.button_attrib XHTML.M.attrib list ->
name:[< string Eliom_parameters.setone ] Eliom_parameters.param_name ->
value:string ->
Xhtmltypes.button_content XHTML.M.elt list ->
[> Xhtmltypes.button ] XHTML.M.elt
<button>
tag with string contentval int_button : ?a:Xhtmltypes.button_attrib XHTML.M.attrib list ->
name:[< int Eliom_parameters.setone ] Eliom_parameters.param_name ->
value:int ->
Xhtmltypes.button_content XHTML.M.elt list ->
[> Xhtmltypes.button ] XHTML.M.elt
<button>
tag with int contentval int32_button : ?a:Xhtmltypes.button_attrib XHTML.M.attrib list ->
name:[< int32 Eliom_parameters.setone ] Eliom_parameters.param_name ->
value:int32 ->
Xhtmltypes.button_content XHTML.M.elt list ->
[> Xhtmltypes.button ] XHTML.M.elt
<button>
tag with int32 contentval int64_button : ?a:Xhtmltypes.button_attrib XHTML.M.attrib list ->
name:[< int64 Eliom_parameters.setone ] Eliom_parameters.param_name ->
value:int64 ->
Xhtmltypes.button_content XHTML.M.elt list ->
[> Xhtmltypes.button ] XHTML.M.elt
<button>
tag with int64 contentval float_button : ?a:Xhtmltypes.button_attrib XHTML.M.attrib list ->
name:[< float Eliom_parameters.setone ] Eliom_parameters.param_name ->
value:float ->
Xhtmltypes.button_content XHTML.M.elt list ->
[> Xhtmltypes.button ] XHTML.M.elt
<button>
tag with float contentval user_type_button : ?a:Xhtmltypes.button_attrib XHTML.M.attrib list ->
name:[< 'a Eliom_parameters.setone ] Eliom_parameters.param_name ->
value:'a ->
('a -> string) ->
Xhtmltypes.button_content XHTML.M.elt list ->
[> Xhtmltypes.button ] XHTML.M.elt
<button>
tag with user_type contentval raw_button : ?a:Xhtmltypes.button_attrib XHTML.M.attrib list ->
button_type:[< button_type ] ->
name:string ->
value:string ->
Xhtmltypes.button_content XHTML.M.elt list ->
[> Xhtmltypes.button ] XHTML.M.elt
<button>
tag with untyped string contentval button : ?a:Xhtmltypes.button_attrib XHTML.M.attrib list ->
button_type:[< button_type ] ->
Xhtmltypes.button_content XHTML.M.elt list ->
[> Xhtmltypes.button ] XHTML.M.elt
<button>
tag with no value. No value is sent.val textarea : ?a:Xhtmltypes.textarea_attrib XHTML.M.attrib list ->
name:[< string Eliom_parameters.setoneradio ] Eliom_parameters.param_name ->
?value:Xhtmltypes.pcdata XHTML.M.elt ->
rows:int -> cols:int -> unit -> [> Xhtmltypes.textarea ] XHTML.M.elt
<textarea>
tagval raw_textarea : ?a:Xhtmltypes.textarea_attrib XHTML.M.attrib list ->
name:string ->
?value:Xhtmltypes.pcdata XHTML.M.elt ->
rows:int -> cols:int -> unit -> [> Xhtmltypes.textarea ] XHTML.M.elt
<textarea>
tag for untyped formtype'a
soption =Xhtmltypes.option_attrib XHTML.M.attrib list * 'a *
Xhtmltypes.pcdata XHTML.M.elt option * bool
type 'a
select_opt =
| |
Optgroup of |
| |
Option of |
<select>
options and groups of options.soption
is the value that will be sent
by the form.pcdata elt option
is not present it is also the
value displayed.select_opt
is the labelval int_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `One of int ] Eliom_parameters.param_name ->
int select_opt ->
int select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for int values.val int32_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `One of int32 ] Eliom_parameters.param_name ->
int32 select_opt ->
int32 select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for int32 values.val int64_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `One of int64 ] Eliom_parameters.param_name ->
int64 select_opt ->
int64 select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for int64 values.val float_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `One of float ] Eliom_parameters.param_name ->
float select_opt ->
float select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for float values.val string_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `One of string ] Eliom_parameters.param_name ->
string select_opt ->
string select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for string values.val user_type_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `One of 'a ] Eliom_parameters.param_name ->
'a select_opt ->
'a select_opt list ->
('a -> string) -> [> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for user type values.val raw_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:string ->
string select_opt ->
string select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for any (untyped) value.val int_multiple_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `Set of int ] Eliom_parameters.param_name ->
int select_opt ->
int select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for int values.val int32_multiple_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `Set of int32 ] Eliom_parameters.param_name ->
int32 select_opt ->
int32 select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for int32 values.val int64_multiple_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `Set of int64 ] Eliom_parameters.param_name ->
int64 select_opt ->
int64 select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for int64 values.val float_multiple_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `Set of float ] Eliom_parameters.param_name ->
float select_opt ->
float select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for float values.val string_multiple_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `Set of string ] Eliom_parameters.param_name ->
string select_opt ->
string select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for string values.val user_type_multiple_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:[< `Set of 'a ] Eliom_parameters.param_name ->
'a select_opt ->
'a select_opt list ->
('a -> string) -> [> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for user type values.val raw_multiple_select : ?a:Xhtmltypes.select_attrib XHTML.M.attrib list ->
name:string ->
string select_opt ->
string select_opt list ->
[> Xhtmltypes.select ] XHTML.M.elt
<select>
tag for any (untyped) value.