gramps-xml
Rust library to work with Gramps XML files.
Implemented according to GRAMPS XML format 1.7.2 (See Document Type definition).
Learnings about translating dtd file to Rust types
CDATAisString(0|1)isboolT?is zero or oneT,T*is zero or moreTs,T+is 1 or moreTs andTis exactly oneTELEMENT
That is<!ELEMENT header (created, researcher?, mediapath*)>struct Headerwith fieldscreated: Created,researcher: Option<Researcher>andmediapath: Option<Vec<MediaPath>>.ATTLIST
That is<!ELEMENT created EMPTY> <!ATTLIST created date CDATA #REQUIRED version CDATA #IMPLIED >struct Createdwith fieldsdate: Stringandversion: Option<String>. Both have to be serde renamed to start with@.(daterange|datespan|dateval|datestr)?This could be any of those types or none. This should be represented as an enum but it is currently unclear how to.