2020-02-27 23:39:05 +00:00
|
|
|
<!DOCTYPE html>
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
|
|
<title>CUCC Expo member: Mark Shinwell</title>
|
2024-12-16 22:10:32 +00:00
|
|
|
<link rel="stylesheet" type="text/css" href="/css/main2.css" />
|
2020-02-27 23:39:05 +00:00
|
|
|
</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>
|