Genealogy and context
Hello, My son is very much interested in genealogy. He already has collected information on thousands of people. Now it would be nice to be able to present this information in the form of a book. There is a possibility to have this done by a commercial service, however then it's not possible to adapt the format or to insert custom text. Media can be added but not in the way we like it. Genealogical information is stored as structured data. I have added a fragment of an Gramps XML file below. In such a file there are events, people, families and other groupings of data and these are linked by handles. What we would like to produce is a book with a number of blocks on every page describing a family: Father, mother, dates of birth and death, date of marriage, occupations and children. It would also be good it there are references to the grandparents. My question is: Where should I get started with a project in which a document is generated automatically from data? As far as I know context should be very suitable for this but I don't have any experience with this. Until now I've used context to make documents without any data being added automatically, except for the bibliography. Thank you in advance, David van Diepen Example Gramps XML file is below: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.7.1//EN" "http://gramps-project.org/xml/1.7.1/grampsxml.dtd"> <database xmlns="http://gramps-project.org/xml/1.7.1/"> <header> <created date="2021-02-03" version="5.1.2"/> <researcher> </researcher> </header> <events> <event handle="_eaa1eb8157f4e812f219719a7b" change="1612382260" id="E1746"> <type>Birth</type> <dateval val="1886-05-01"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb815867f8610a89cf6ce74"/> </event> <event handle="_eaa1eb8158f53693508394c0c48" change="1612382260" id="E1747"> <type>Death</type> <dateval val="1886-05-18"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb815964a4157b91beb0bcb"/> </event> <event handle="_eaa1eb99c423cc862cf41d591a7" change="1612382270" id="E6977"> <type>Marriage</type> <dateval val="1883-03-11"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb99c4870fe758b76275a86"/> </event> </events> <people> <person handle="_eaa1eb8157e1aa01007c5a920d1" change="1612382260" id="I0987"> <gender>F</gender> <name type="Birth Name"> <first>Catharina</first> <surname>Geldof</surname> </name> <eventref hlink="_eaa1eb8157f4e812f219719a7b" role="Primary"/> <eventref hlink="_eaa1eb8158f53693508394c0c48" role="Primary"/> <childof hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> <person handle="_eaa1eb7a37226ca41e414cd2f36" change="1612382258" id="I0049"> <gender>M</gender> <name type="Birth Name"> <first>Cornelis</first> <surname>Geldof</surname> </name> <eventref hlink="_eaa1eb7a3735b3bd6acb1a5aa1c" role="Primary"/> <eventref hlink="_eaa1eb7a3831437df21bf3f6924" role="Primary"/> <eventref hlink="_eaa1eb7a3942a2fb185331a9edf" role="Primary"/> <childof hlink="_eaa1eb7a39a2dfce87e06b0adab"/> <parentin hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> <person handle="_eaa1eb7a3a54ad77d5f29a821c9" change="1612382258" id="I0050"> <gender>F</gender> <name type="Birth Name"> <first>Maatje</first> <surname>de Voogd</surname> </name> <eventref hlink="_eaa1eb7a3a731714abad9183560" role="Primary"/> <eventref hlink="_eaa1eb7a3b74da1e4ff36adcaab" role="Primary"/> <eventref hlink="_eaa1eb7a3c8685236291abfcbc9" role="Primary"/> <childof hlink="_eaa1eb7a3cd3853b21c39baab9a"/> <parentin hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> </people> <families> <family handle="_eaa1eb79b3313e7e3c96019665c" change="1612382261" id="F0016"> <rel type="Married"/> <father hlink="_eaa1eb7a37226ca41e414cd2f36"/> <mother hlink="_eaa1eb7a3a54ad77d5f29a821c9"/> <eventref hlink="_eaa1eb99c423cc862cf41d591a7" role="Family"/> <childref hlink="_eaa1eb79b0b8526fca40e502ca"/> <childref hlink="_eaa1eb815521c4281a23ee688d2"/> <childref hlink="_eaa1eb8157e1aa01007c5a920d1"/> <childref hlink="_eaa1eb815a9647c05a8560739f3"/> <childref hlink="_eaa1eb815d632b4145a6a964cd1"/> <childref hlink="_eaa1eb81603107eb844e1d0a1ce"/> <childref hlink="_eaa1eb816306fa3946fe9a88f1b"/> <childref hlink="_eaa1eb81651258b725548dba1dc"/> <childref hlink="_eaa1eb8167243fc0ae5b90986c1"/> <childref hlink="_eaa1eb818cf2e229c88b97b192e"/> <childref hlink="_eaa1eb818ec579ca7141aa0efbe"/> <childref hlink="_eaa1eb8191314350b99ec3ade67"/> </family> </families>
Am 28.02.2021 um 19:32 schrieb David van Diepen
: Genealogical information is stored as structured data. I have added a fragment of an Gramps XML file below. In such a file there are events, people, families and other groupings of data and these are linked by handles.
What we would like to produce is a book with a number of blocks on every page describing a family: Father, mother, dates of birth and death, date of marriage, occupations and children. It would also be good it there are references to the grandparents.
Hi David, I’m also using Gramps (for my personal family tree and for research for a historical novel), and I always wondered if it wouldn’t be possible to create nicer family trees and other charts using ConTeXt/MetaPost. But I still can’t handle XML in ConTeXt nor MetaPost myself. I’d suggest to first create a sample layout to have a clear target – how would you like to present your data? Since Gramps XML is not very straightforward (many crossreferences) it _might_ make sense to use a preprocessor (XSLT) and convert it to XML or Lua tables that you can use with the bibliography module. I’m quite sure it’s possible to do it completely in ConTeXt/Lua, but if you’d like to have configurable output, you’d probably create something similar to the bib module. I’m looking forward to what you will create! (And I think it would be an excellent topic for a talk at the ConTeXt meeting and/or an article in the ConTeXt journal!) Hraban
On 2/28/2021 7:32 PM, David van Diepen wrote:
Hello,
My son is very much interested in genealogy. He already has collected information on thousands of people. Now it would be nice to be able to present this information in the form of a book. There is a possibility to have this done by a commercial service, however then it's not possible to adapt the format or to insert custom text. Media can be added but not in the way we like it.
Genealogical information is stored as structured data. I have added a fragment of an Gramps XML file below. In such a file there are events, people, families and other groupings of data and these are linked by handles.
What we would like to produce is a book with a number of blocks on every page describing a family: Father, mother, dates of birth and death, date of marriage, occupations and children. It would also be good it there are references to the grandparents.
My question is: Where should I get started with a project in which a document is generated automatically from data? As far as I know context should be very suitable for this but I don't have any experience with this. Until now I've used context to make documents without any data being added automatically, except for the bibliography.
Thank you in advance,
David van Diepen
Example Gramps XML file is below:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE database PUBLIC "-//Gramps//DTD Gramps XML 1.7.1//EN" "http://gramps-project.org/xml/1.7.1/grampsxml.dtd"> <database xmlns="http://gramps-project.org/xml/1.7.1/"> <header> <created date="2021-02-03" version="5.1.2"/> <researcher> </researcher> </header> <events> <event handle="_eaa1eb8157f4e812f219719a7b" change="1612382260" id="E1746"> <type>Birth</type> <dateval val="1886-05-01"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb815867f8610a89cf6ce74"/> </event> <event handle="_eaa1eb8158f53693508394c0c48" change="1612382260" id="E1747"> <type>Death</type> <dateval val="1886-05-18"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb815964a4157b91beb0bcb"/> </event> <event handle="_eaa1eb99c423cc862cf41d591a7" change="1612382270" id="E6977"> <type>Marriage</type> <dateval val="1883-03-11"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb99c4870fe758b76275a86"/> </event> </events> <people> <person handle="_eaa1eb8157e1aa01007c5a920d1" change="1612382260" id="I0987"> <gender>F</gender> <name type="Birth Name"> <first>Catharina</first> <surname>Geldof</surname> </name> <eventref hlink="_eaa1eb8157f4e812f219719a7b" role="Primary"/> <eventref hlink="_eaa1eb8158f53693508394c0c48" role="Primary"/> <childof hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> <person handle="_eaa1eb7a37226ca41e414cd2f36" change="1612382258" id="I0049"> <gender>M</gender> <name type="Birth Name"> <first>Cornelis</first> <surname>Geldof</surname> </name> <eventref hlink="_eaa1eb7a3735b3bd6acb1a5aa1c" role="Primary"/> <eventref hlink="_eaa1eb7a3831437df21bf3f6924" role="Primary"/> <eventref hlink="_eaa1eb7a3942a2fb185331a9edf" role="Primary"/> <childof hlink="_eaa1eb7a39a2dfce87e06b0adab"/> <parentin hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> <person handle="_eaa1eb7a3a54ad77d5f29a821c9" change="1612382258" id="I0050"> <gender>F</gender> <name type="Birth Name"> <first>Maatje</first> <surname>de Voogd</surname> </name> <eventref hlink="_eaa1eb7a3a731714abad9183560" role="Primary"/> <eventref hlink="_eaa1eb7a3b74da1e4ff36adcaab" role="Primary"/> <eventref hlink="_eaa1eb7a3c8685236291abfcbc9" role="Primary"/> <childof hlink="_eaa1eb7a3cd3853b21c39baab9a"/> <parentin hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> </people> <families> <family handle="_eaa1eb79b3313e7e3c96019665c" change="1612382261" id="F0016"> <rel type="Married"/> <father hlink="_eaa1eb7a37226ca41e414cd2f36"/> <mother hlink="_eaa1eb7a3a54ad77d5f29a821c9"/> <eventref hlink="_eaa1eb99c423cc862cf41d591a7" role="Family"/> <childref hlink="_eaa1eb79b0b8526fca40e502ca"/> <childref hlink="_eaa1eb815521c4281a23ee688d2"/> <childref hlink="_eaa1eb8157e1aa01007c5a920d1"/> <childref hlink="_eaa1eb815a9647c05a8560739f3"/> <childref hlink="_eaa1eb815d632b4145a6a964cd1"/> <childref hlink="_eaa1eb81603107eb844e1d0a1ce"/> <childref hlink="_eaa1eb816306fa3946fe9a88f1b"/> <childref hlink="_eaa1eb81651258b725548dba1dc"/> <childref hlink="_eaa1eb8167243fc0ae5b90986c1"/> <childref hlink="_eaa1eb818cf2e229c88b97b192e"/> <childref hlink="_eaa1eb818ec579ca7141aa0efbe"/> <childref hlink="_eaa1eb8191314350b99ec3ade67"/> </family> </families>
\startbuffer[test] <?xml version="1.0" encoding="UTF-8"?> <database xmlns="http://gramps-project.org/xml/1.7.1/"> <header> <created date="2021-02-03" version="5.1.2"/> <researcher> </researcher> </header> <events> <event handle="_eaa1eb8157f4e812f219719a7b" change="1612382260" id="E1746"> <type>Birth</type> <dateval val="1886-05-01"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb815867f8610a89cf6ce74"/> </event> <event handle="_eaa1eb8158f53693508394c0c48" change="1612382260" id="E1747"> <type>Death</type> <dateval val="1886-05-18"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb815964a4157b91beb0bcb"/> </event> <event handle="_eaa1eb99c423cc862cf41d591a7" change="1612382270" id="E6977"> <type>Marriage</type> <dateval val="1883-03-11"/> <place hlink="_eaa1eb79a6e5b1f282813dc5826"/> <citationref hlink="_eaa1eb99c4870fe758b76275a86"/> </event> </events> <people> <person handle="_eaa1eb8157e1aa01007c5a920d1" change="1612382260" id="I0987"> <gender>F</gender> <name type="Birth Name"> <first>Catharina</first> <surname>Geldof</surname> </name> <eventref hlink="_eaa1eb8157f4e812f219719a7b" role="Primary"/> <eventref hlink="_eaa1eb8158f53693508394c0c48" role="Primary"/> <childof hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> <person handle="_eaa1eb7a37226ca41e414cd2f36" change="1612382258" id="I0049"> <gender>M</gender> <name type="Birth Name"> <first>Cornelis</first> <surname>Geldof</surname> </name> <eventref hlink="_eaa1eb7a3735b3bd6acb1a5aa1c" role="Primary"/> <eventref hlink="_eaa1eb7a3831437df21bf3f6924" role="Primary"/> <eventref hlink="_eaa1eb7a3942a2fb185331a9edf" role="Primary"/> <childof hlink="_eaa1eb7a39a2dfce87e06b0adab"/> <parentin hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> <person handle="_eaa1eb7a3a54ad77d5f29a821c9" change="1612382258" id="I0050"> <gender>F</gender> <name type="Birth Name"> <first>Maatje</first> <surname>de Voogd</surname> </name> <eventref hlink="_eaa1eb7a3a731714abad9183560" role="Primary"/> <eventref hlink="_eaa1eb7a3b74da1e4ff36adcaab" role="Primary"/> <eventref hlink="_eaa1eb7a3c8685236291abfcbc9" role="Primary"/> <childof hlink="_eaa1eb7a3cd3853b21c39baab9a"/> <parentin hlink="_eaa1eb79b3313e7e3c96019665c"/> </person> </people> <families> <family handle="_eaa1eb79b3313e7e3c96019665c" change="1612382261" id="F0016"> <rel type="Married"/> <father hlink="_eaa1eb7a37226ca41e414cd2f36"/> <mother hlink="_eaa1eb7a3a54ad77d5f29a821c9"/> <eventref hlink="_eaa1eb99c423cc862cf41d591a7" role="Family"/> <childref hlink="_eaa1eb8157e1aa01007c5a920d1"/> </family> </families> </database> \stopbuffer % mapping \startxmlsetups xml:mysetups \xmlsetsetup{#1}{database|families|family|person|childref}{xml:*} \stopxmlsetups \xmlregistersetup{xml:mysetups} \startxmlsetups xml:database \xmlfirst{#1}{/families} \stopxmlsetups \startxmlsetups xml:families \xmlall{#1}{/family} \stopxmlsetups \startxmlsetups xml:person \starttabulate[|||] \BC name \NC \xmlfirst{#1}{name/first/text()} \NC \NR \BC surname \NC \xmlfirst{#1}{name/surname/text()} \NC \NR \BC gender \NC \xmlfirst{#1}{gender} \NC \NR \stoptabulate \stopxmlsetups \startxmlsetups xml:childref % \startsubsubject[title=Child] \xmlfirst{main}{/database/people/person[@handle='\xmlatt{#1}{hlink}']} % \stopsubsubject \stopxmlsetups \startxmlsetups xml:family \xmldoif {#1}{/father} { \startsubject[title=Father] \xmlfirst{main}{/database/people/person[@handle='\xmlattribute{#1}{/father}{hlink}']} \stopsubject } \xmldoif {#1}{/mother} { \startsubject[title=Mother] \xmlfirst{main}{/database/people/person[@handle='\xmlattribute{#1}{/mother}{hlink}']} \stopsubject } \xmldoif {#1}{/childref} { \startsubject[title=Children] \xmlall{#1}{/childref} \stopsubject } \stopxmlsetups \starttext % \xmlprocess{main}{somefile.xml}{} \xmlprocessbuffer{main}{test}{} \stoptext ----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl -----------------------------------------------------------------
participants (3)
-
David van Diepen
-
Hans Hagen
-
Henning Hraban Ramm