Mark Shinwell


Mark Shinwell has been on expo in the following years:

ExpoLogbook mentionsSurvex trips
1999   6   5
2000   11   8
2001   5   7
2002   5   1
2003   13   8
2004   6   1
2005   2   2
2006   9   7
2007   2   0
2008   0   0
2010   1   1
2011   0   0
2012   0   0
2013   0   0
2014   0   0
2016   0   0
2018   2   0
2023   1   0
2024   1   0

Surveys done

Wallets and surveys mentioning Mark Shinwell
Julian Todd 2018

Mark Shinwell.


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"


Photo caption