XML family tree data is the future

XYFT uses XML data

XML family tree data is very easy to use. Even the largest family trees can easily be accommodated in XML files now that modern computers have so much capacity.

XML has been around for many years and is a very good way of storing data in a non-proprietary, textual way. There are loads of tools nowadays to display and query XML but XYFT doesn’t need any of those – the data is all read into memory and navigation is very fast.

The 5 simple tables that use XML family tree data to build a complete family tree

As in all versions of XY Family Tree XYFT uses just 5 basic tables. These tables now use XML data:

  • people
  • marriages
  • associations
  • sources
  • link people to sources

people.xml

contains primary fields, those essential or common to all needs, display option fields, and custom fields to accommodate anything else.

The primary fields are:

  • ID – person ID is a number unique within this family
  • FamilyName – by convention
  • GivenNames – by convention
  • Sex – usually M or F but can be U if unknown, undecided, unclassified
  • PlaceOfBirth – text
  • DateOfBirth – any format. XYFT finds 4 consecutive digits as year of birth
  • PlaceOfDeath – text
  • DateOfDeath – any format. XYFT finds 4 consecutive digits as year of death
  • IDoFather – as ID above
  • IDofMother – as ID above
  • Notes – as much as you like. All text in Notes is searchable
  • UUID – an identifier that ensures this person is unique in all genealogy
  • LastModified – records the date, time and user at last change

plus

  • DisplayOptions – see below
  • CustomFields – see below

Display options and Custom fields

The display option fields are a subset of the DisplayOptions tag:

  • LevelOfHide – allows an option to show or hide this person in various views
  • BriefNote – used in some displays
  • PrivateNotes – just for you

Not all software will use these fields, maybe considering them unnecessary, but I have found them very useful in controlling what information is displayed in different views. For instance, sometimes you don’t want to show a particular person at all in one place, with limited information in another place and unrestricted elsewhere. Sometimes it’s useful to add a brief note to a display. Sometimes you may wish to share private notes – or maybe not.

The custom fields can be any you choose to make. These are all under the CustomFields tag.

CustomFields tag

By using custom fields XYFT has no obligations to any standard but could be seen to run the risk of incompatibility. The problem with standards is that there are so many to choose from. Each culture will have its own standard and no one will ever agree that one lexicon will cover all situations. However, as XML is here to stay, all custom fields will have the same meaning to the reader as they do to the writer. For instance, if you want to create a custom field for education you can do it like this:

Using custom fields in XML family tree data
Example of Custom Fields in XML family tree data

But unless you really need to categorise every detail it’s much better to write these things in notes where they will be equally findable and be much easier to read. So the above would read as:

“Primary education was at a school near home. From 11 to 18 he went to college. After leaving college he went to the University of Tashkent where he was awarded a 1st Class Honours Degree in Engineering.”

marriages.xml

just has these fields:

  • ID – marriage ID is a number unique within this family
  • MaleID – as in ID of person
  • FemaleID – as in ID of person
  • DateOfMarriage – a date in any format
  • EndOfMarriage – a date in any format – rarely used
  • Notes – notes about the marriage
  • LastModified – records date, time and user at last change

associations.xml

just has these fields:

  • ID – association ID is a number unique within this family
  • LeftID – as in ID of person
  • RightID – as in ID of person
  • DateOfAssociation – a date in any format
  • EndOfAssociation – a date in any format. Rarely used
  • Notes – notes about this association
  • LastModified – records date, time and user at last change

sources.xml

uses these fields:

  • ID – source ID is a number unique within this family
  • SourcePath – tells where the source can be found. This could be a picture, a video, a web link, a document with text explaining where a physical source can be found
  • Text – telling about the source
  • LastModified – records date, time and user at last change

linkpeoplesources.xml

uses these fields:

  • PersonID – as above
  • SourceID – as above
  • Comment – telling about this unique link between a person and a source
  • LastModified – records date, time and user at last change

No GEDCOM events

There are no events like in GEDCOM but, instead, a source can point to an event. For example, a source might be a photograph taken at a wedding and there could be links to all the people shown in the photograph. Thus the wedding is the event and all the people at the wedding are linked to that event and you can click to navigate to each of them. But equally a source might just be link to an external file on a website and link to just one person.

Reading XML family tree data

XYFT will view your family tree in a controlled structured way. However, your original XML files can also be viewed in any browser. Different browsers work differently but all will present the data in a neat way.

Here’s a bit of XML data viewed in Chrome

 XML family tree data viewed in Chrome
XML family tree data viewed in Chrome

And here’s the same XML in Internet Explorer

 XML family tree data viewed in Internet Explorer
XML family tree data viewed in Internet Explorer

 

Also shown here is the same XML in Notepad++, but importantly, Notepad++ also allows you edit the words.

If you choose to edit the XML directly you must be very careful to follow the STRICT rules of XML.

XML family tree data viewed in Notepad++
XML family tree data viewed in Notepad++

Searching XML family tree data

Use conventional Ctrl-F to search an XML file (and almost any file anywhere). Below is an example of finding Albert in Chrome. There are 63 references to Albert found in this file.

Finding text in XML family tree data using Chrome
Finding text in XML family tree data using Chrome

Use XYFT to search for Albert wherever that name is used. Search for Albert within this family, in a source, or in all the family tree files you are using. Click on any of those results to bring it into the focus.

Finding Albert using XYFT with XML family tree data
Finding Albert using XYFT with XML family tree data

Searching XML across many files

A very useful feature of XYFT is that you can aim searches for a word at the current family, sources in the current family or across all families. For instance, searching for ЗИЛ (a type of Russian car) across 1.25 GB of XML family data takes only a few seconds and shows all the files that contain that text somewhere. No matter where the text is, XYFT will search every family in the families folder and find it.

All these families use XML data

to offer just one family in this instance

Finding a word across many families using XML family tree data

and click that to find that there are two people in this family with that word Zil somewhere.

Finding a word in one family using XML family tree data

However, please don’t think that either of these people have ever seen a Zil or been in one, this is just an example to show that XYFT can search in any language as well as English and find needles in haystacks very quickly. It’s noteworthy that it took this 6-year-old low-spec PC less than 20 seconds to search 1.25 GB to find that file containing ЗИЛ and all my tests have been similarly fast.

Editing XML family tree data

Editing XML is easy using any text editor. My favourite is Notepad++. Best of all, for editing your XML family tree data use XYFT.

Leave a Reply

Your email address will not be published. Required fields are marked *