Hi again,
> I am looking for soem examples (Pleac-like examples, not
> "documentation") on using tables and forms with select
> option with Eliom (XHTML).
...And here's an example with XHTML.M.tablex, as promised.
Note that the construction of XHTML tables with Ocsigen seems
overly complex at first sight, but it actually makes sense
in light of the XHTML standard, which requires the lists of
rows, of columns, etc, to have *at least one element*.
Hence why most constructors used in tables have the form
"cons el1 [el2; el3; ...]"...
Best regards,
Dario Teixeira
===============================================================
open XHTML.M
let main_handler sp () () =
let table_head =
XHTML.M.thead
(XHTML.M.tr (XHTML.M.th [pcdata "HA1"]) [XHTML.M.td [pcdata "HB1"]; XHTML.M.td [pcdata "HC1"]])
[
(XHTML.M.tr (XHTML.M.th [pcdata "HA2"]) [XHTML.M.td [pcdata "HB2"]; XHTML.M.td [pcdata "HC2"]]);
(XHTML.M.tr (XHTML.M.th [pcdata "HA3"]) [XHTML.M.td [pcdata "HB3"]; XHTML.M.td [pcdata "HC3"]]);
]
and table_foot =
XHTML.M.tfoot
(XHTML.M.tr (XHTML.M.th [pcdata "FA1"]) [XHTML.M.td [pcdata "FB1"]; XHTML.M.td [pcdata "FC1"]])
[
(XHTML.M.tr (XHTML.M.th [pcdata "FA2"]) [XHTML.M.td [pcdata "FB2"]; XHTML.M.td [pcdata "FC2"]]);
(XHTML.M.tr (XHTML.M.th [pcdata "FA3"]) [XHTML.M.td [pcdata "FB3"]; XHTML.M.td [pcdata "FC3"]]);
]
and table_body_hd =
XHTML.M.tbody
(XHTML.M.tr (XHTML.M.th [pcdata "XA1"]) [XHTML.M.td [pcdata "XB1"]; XHTML.M.td [pcdata "XC1"]])
[
(XHTML.M.tr (XHTML.M.th [pcdata "XA2"]) [XHTML.M.td [pcdata "XB2"]; XHTML.M.td [pcdata "XC2"]]);
(XHTML.M.tr (XHTML.M.th [pcdata "XA3"]) [XHTML.M.td [pcdata "XB3"]; XHTML.M.td [pcdata "XC3"]]);
]
and table_body_tl =
[
XHTML.M.tbody
(XHTML.M.tr (XHTML.M.th [pcdata "YA1"]) [XHTML.M.td [pcdata "YB1"]; XHTML.M.td [pcdata "YC1"]])
[
(XHTML.M.tr (XHTML.M.th [pcdata "YA2"]) [XHTML.M.td [pcdata "YB2"]; XHTML.M.td [pcdata "YC2"]]);
(XHTML.M.tr (XHTML.M.th [pcdata "YA3"]) [XHTML.M.td [pcdata "YB3"]; XHTML.M.td [pcdata "YC3"]]);
];
XHTML.M.tbody
(XHTML.M.tr (XHTML.M.th [pcdata "ZA1"]) [XHTML.M.td [pcdata "ZB1"]; XHTML.M.td [pcdata "ZC1"]])
[
(XHTML.M.tr (XHTML.M.th [pcdata "ZA2"]) [XHTML.M.td [pcdata "ZB2"]; XHTML.M.td [pcdata "ZC2"]]);
(XHTML.M.tr (XHTML.M.th [pcdata "ZA3"]) [XHTML.M.td [pcdata "ZB3"]; XHTML.M.td [pcdata "ZC3"]]);
];
] in
let my_table =
XHTML.M.tablex ~thead:table_head ~tfoot:table_foot table_body_hd table_body_tl
in Lwt.return
(html
(head (title (pcdata "")) [])
(body [p [pcdata "Table:"]; my_table]))
let main_service =
Eliom_predefmod.Xhtml.register_new_service
~path: [""]
~get_params: Eliom_parameters.unit
main_handler