<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>CUCC Expo member: Mark Shinwell</title> <link rel="stylesheet" type="text/css" href="../../css/main2.css" /> </head> <body> <h2 id="tophead">CUCC Expedition Handbook</h2> <h1>Mark Shinwell</h1> <img class="onleft" src="../i/marks.jpg" alt="Julian Todd 2018" /> <p><img class="onright" src="../i/shinwell.jpg" width="180" height="200" alt="" /> <b>Mark Shinwell</b>.</p> <pre><code> open Core type xml = | Element of Xmlm.tag * xml list | Data of string (* let rec dump_xml = function | Element (((_, name), _attrs), xmls) -> Printf.eprintf "Element %s:\n" name; dump_xmls xmls; Printf.eprintf "Element %s ends.\n" name | Data d -> Printf.eprintf "Data %s\n" d and dump_xmls xmls = List.iter xmls ~f:dump_xml *) let input_xml file = let chan = In_channel.create file in let el tag children = Element (tag, children) in let data str = Data str in try let input = Xmlm.make_input (`Channel chan) in let _dtd, xml = Xmlm.input_doc_tree ~el ~data input in In_channel.close chan; xml with Xmlm.Error ((line, column), error) -> Printf.eprintf "XML parsing error (line %d, column %d): %s\n" line column (Xmlm.error_message error); failwith "Cannot parse GPX file" </code></pre> <hr style="clear: both" /><p class="caption">Photo caption</p> <hr /> </body> </html>