<?xml version="1.0" encoding="UTF-8"?> <!-- # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2005-2006 Donald N. Allingham # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # Written by Alex Roitman # $Id$ --> <!-- This is the RELAX NG schema for the GRAMPS XML genealogy data format. --> <grammar datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://gramps-project.org/xml/1.1.3/" xmlns="http://relaxng.org/ns/structure/1.0"> <start><element name="database"> <element name="header"> <element name="created"> <attribute name="date"><data type="date"/></attribute> <attribute name="version"><text/></attribute> </element> <optional><element name="researcher"> <ref name="researcher-content"/> </element></optional> </element> <optional><element name="name-formats"> <zeroOrMore><element name="format"> <ref name="format-content"/> </element></zeroOrMore> </element></optional> <optional><element name="events"> <zeroOrMore><element name="event"> <ref name="event-content"/> </element></zeroOrMore> </element></optional> <optional><element name="people"> <optional><attribute name="default"><text/></attribute></optional> <optional><attribute name="home"> <data type="IDREF"/> </attribute></optional> <zeroOrMore><element name="person"> <ref name="person-content"/> </element></zeroOrMore> </element></optional> <optional><element name="families"> <zeroOrMore><element name="family"> <ref name="family-content"/> </element></zeroOrMore> </element></optional> <optional><element name="sources"> <zeroOrMore><element name="source"> <ref name="source-content"/> </element></zeroOrMore> </element></optional> <optional><element name="places"> <zeroOrMore><element name="placeobj"> <ref name="place-content"/> </element></zeroOrMore> </element></optional> <optional><element name="objects"> <zeroOrMore><element name="object"> <ref name="object-content"/> </element></zeroOrMore> </element></optional> <optional><element name="repositories"> <zeroOrMore><element name="repository"> <ref name="repository-content"/> </element></zeroOrMore> </element></optional> <optional><element name="bookmarks"> <zeroOrMore><element name="bookmark"> <ref name="bookmark-content"/> </element></zeroOrMore> </element></optional> </element></start> <define name="researcher-content"> <element name="resname"><text/></element> <optional><element name="resaddr"><text/></element></optional> <optional><element name="rescity"><text/></element></optional> <optional><element name="resstate"><text/></element></optional> <optional><element name="rescountry"><text/></element></optional> <optional><element name="respostal"><text/></element></optional> <optional><element name="resphone"><text/></element></optional> <optional><element name="resemail"><text/></element></optional> </define> <define name="primary-object"> <attribute name="id"><text/></attribute> <attribute name="handle"><data type="ID"/></attribute> <optional><attribute name="priv"><choice> <value>0</value> <value>1</value> </choice></attribute></optional> <optional><attribute name="marker"><text/></attribute></optional> <attribute name="change"><text/></attribute> </define> <define name="person-content"> <ref name="primary-object"/> <element name="gender"><choice> <value>M</value> <value>F</value> <value>U</value> </choice></element> <zeroOrMore><element name="name"> <ref name="name-content"/> </element></zeroOrMore> <optional><element name="nick"><text/></element></optional> <zeroOrMore><element name="eventref"> <ref name="eventref-content"/> </element></zeroOrMore> <zeroOrMore><element name="lds_ord"> <ref name="lds-content"/> </element></zeroOrMore> <zeroOrMore><element name="objref"> <ref name="objref-content"/> </element></zeroOrMore> <zeroOrMore><element name="address"> <ref name="address-content"/> </element></zeroOrMore> <zeroOrMore><element name="attribute"> <ref name="attribute-content"/> </element></zeroOrMore> <zeroOrMore><element name="url"> <ref name="url-content"/> </element></zeroOrMore> <zeroOrMore><element name="childof"> <attribute name="hlink"><data type="IDREF"/></attribute> </element></zeroOrMore> <zeroOrMore><element name="parentin"> <attribute name="hlink"><data type="IDREF"/></attribute> </element></zeroOrMore> <zeroOrMore><element name="personref"> <attribute name="hlink"><data type="IDREF"/></attribute> <optional><attribute name="priv"> <ref name="priv-content"/> </attribute></optional> <attribute name="rel"><text/></attribute> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> </define> <define name="child-rel"> <choice> <value>Birth</value> <value>Adopted</value> <value>Stepchild</value> <value>Sponsored</value> <value>Foster</value> <value>None</value> <value>Other</value> <value>Unknown</value> </choice> </define> <define name="name-content"> <optional><attribute name="alt"><choice> <value>0</value> <value>1</value> </choice></attribute></optional> <optional><attribute name="priv"> <ref name="priv-content"/> </attribute></optional> <optional><attribute name="type"><choice> <value>Also Known As</value> <value>Birth Name</value> <value>Married Name</value> <value>Other Name</value> </choice></attribute></optional> <optional><attribute name="sort"><text/></attribute></optional> <optional><attribute name="display"><text/></attribute></optional> <optional><element name="first"><text/></element></optional> <optional><element name="last"> <text/> <optional><attribute name="prefix"><text/></attribute></optional> <optional><attribute name="group"><text/></attribute></optional> </element></optional> <optional><element name="suffix"><text/></element></optional> <optional><element name="patronymic"><text/></element></optional> <optional><element name="title"><text/></element></optional> <optional><ref name="date-content"/></optional> <optional><element name="note"> <ref name="note-content"/> </element></optional> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> </define> <define name="address-content"> <optional><attribute name="priv"> <ref name="priv-content"/> </attribute></optional> <optional><ref name="date-content"/></optional> <optional><element name="street"><text/></element></optional> <optional><element name="city"><text/></element></optional> <optional><element name="county"><text/></element></optional> <optional><element name="state"><text/></element></optional> <optional><element name="country"><text/></element></optional> <optional><element name="postal"><text/></element></optional> <optional><element name="phone"><text/></element></optional> <optional><element name="note"> <ref name="note-content"/> </element></optional> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> </define> <define name="date-content"> <choice> <element name="daterange"> <attribute name="start"><text/></attribute> <attribute name="stop"><text/></attribute> <optional><attribute name="quality"><choice> <value>estimated</value> <value>calculated</value> </choice></attribute></optional> <optional><attribute name="cformat"><text/></attribute></optional> </element> <element name="dateval"> <attribute name="val"><text/></attribute> <optional><attribute name="cformat"><text/></attribute></optional> <optional><attribute name="type"><choice> <value>before</value> <value>after</value> <value>about</value> </choice></attribute></optional> <optional><attribute name="quality"><choice> <value>estimated</value> <value>calculated</value> </choice></attribute></optional> </element> <element name="datestr"> <attribute name="val"><text/></attribute> </element> </choice> </define> <define name="family-content"> <ref name="primary-object"/> <optional><element name="rel"> <attribute name="type"><text/></attribute> </element></optional> <optional><element name="father"> <attribute name="hlink"><data type="IDREF"/></attribute> </element></optional> <optional><element name="mother"> <attribute name="hlink"><data type="IDREF"/></attribute> </element></optional> <zeroOrMore><element name="eventref"> <ref name="eventref-content"/> </element></zeroOrMore> <zeroOrMore><element name="lds_ord"> <ref name="lds-content"/> </element></zeroOrMore> <zeroOrMore><element name="objref"> <ref name="objref-content"/> </element></zeroOrMore> <zeroOrMore><element name="childref"> <attribute name="hlink"><data type="IDREF"/></attribute> <optional><attribute name="priv"> <ref name="priv-content"/> </attribute></optional> <optional><attribute name="mrel"> <ref name="child-rel"/> </attribute></optional> <optional><attribute name="frel"> <ref name="child-rel"/> </attribute></optional> </element></zeroOrMore> <zeroOrMore><element name="attribute"> <ref name="attribute-content"/> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> <optional><ref name="date-content"/></optional> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> </define> <define name="event-content"> <ref name="primary-object"/> <element name="type"><text/></element> <optional><ref name="date-content"/></optional> <optional><element name="place"> <attribute name="hlink"><data type="IDREF"/></attribute> </element></optional> <optional><element name="description"><text/></element></optional> <zeroOrMore><element name="attribute"> <ref name="attribute-content"/> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> <zeroOrMore><element name="objref"> <ref name="objref-content"/> </element></zeroOrMore> </define> <define name="source-content"> <ref name="primary-object"/> <optional><element name="stitle"><text/></element></optional> <optional><element name="sauthor"><text/></element></optional> <optional><element name="spubinfo"><text/></element></optional> <optional><element name="sabbrev"><text/></element></optional> <optional><element name="note"> <ref name="note-content"/> </element></optional> <zeroOrMore><element name="objref"> <ref name="objref-content"/> </element></zeroOrMore> <zeroOrMore><element name="data_item"> <attribute name="key"><text/></attribute> <attribute name="value"><text/></attribute> </element></zeroOrMore> <zeroOrMore><element name="reporef"> <ref name="reporef-content"/> </element></zeroOrMore> </define> <define name="place-content"> <ref name="primary-object"/> <optional><element name="ptitle"><text/></element></optional> <optional><element name="coord"> <attribute name="long"><data type="float"/></attribute> <attribute name="lat"><data type="float"/></attribute> </element></optional> <zeroOrMore><element name="location"> <optional><attribute name="street"><text/></attribute></optional> <optional><attribute name="city"><text/></attribute></optional> <optional><attribute name="parish"><text/></attribute></optional> <optional><attribute name="county"><text/></attribute></optional> <optional><attribute name="state"><text/></attribute></optional> <optional><attribute name="country"><text/></attribute></optional> <optional><attribute name="postal"><text/></attribute></optional> <optional><attribute name="phone"><text/></attribute></optional> </element></zeroOrMore> <zeroOrMore><element name="objref"> <ref name="objref-content"/> </element></zeroOrMore> <zeroOrMore><element name="url"> <ref name="url-content"/> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> </define> <define name="object-content"> <ref name="primary-object"/> <element name="file"> <attribute name="src"><text/></attribute> <attribute name="mime"><text/></attribute> <attribute name="description"><text/></attribute> </element> <zeroOrMore><element name="attribute"> <ref name="attribute-content"/> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> <optional><ref name="date-content"/></optional> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> </define> <define name="repository-content"> <ref name="primary-object"/> <optional><element name="rname"><text/></element></optional> <optional><element name="type"><text/></element></optional> <zeroOrMore><element name="address"> <ref name="address-content"/> </element></zeroOrMore> <zeroOrMore><element name="url"> <ref name="url-content"/> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> </define> <define name="bookmark-content"> <attribute name="target"><choice> <value>person</value> <value>family</value> <value>event</value> <value>source</value> <value>place</value> <value>media</value> <value>repository</value> </choice></attribute> <attribute name="hlink"><data type="IDREF"/></attribute> </define> <define name="format-content"> <attribute name="number"><text/></attribute> <attribute name="name"><text/></attribute> <attribute name="fmt_str"><text/></attribute> <optional><attribute name="active"><choice> <value>0</value> <value>1</value> </choice></attribute></optional> </define> <define name="note-content"> <optional><attribute name="format"><choice> <value>0</value> <value>1</value> </choice></attribute></optional> <text/> </define> <define name="sourceref-content"> <attribute name="hlink"><data type="IDREF"/></attribute> <optional><attribute name="conf"><text/></attribute></optional> <optional><element name="spage"><text/></element></optional> <optional><element name="scomments"><text/></element></optional> <optional><element name="stext"><text/></element></optional> <optional><ref name="date-content"/></optional> </define> <define name="eventref-content"> <attribute name="hlink"><data type="IDREF"/></attribute> <optional><attribute name="priv"> <ref name="priv-content"/> </attribute></optional> <optional><attribute name="role"><text/></attribute></optional> <zeroOrMore><element name="attribute"> <ref name="attribute-content"/> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> </define> <define name="reporef-content"> <attribute name="hlink"><data type="IDREF"/></attribute> <optional><attribute name="callno"><text/></attribute></optional> <optional><attribute name="medium"><text/></attribute></optional> <optional><element name="note"> <ref name="note-content"/> </element></optional> </define> <define name="priv-content"> <choice> <value>0</value> <value>1</value> </choice> </define> <define name="attribute-content"> <optional><attribute name="priv"> <ref name="priv-content"/> </attribute></optional> <attribute name="type"><text/></attribute> <attribute name="value"><text/></attribute> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> </define> <define name="url-content"> <optional><attribute name="priv"> <ref name="priv-content"/> </attribute></optional> <optional><attribute name="type"><text/></attribute></optional> <attribute name="href"><text/></attribute> <optional><attribute name="description"><text/></attribute></optional> </define> <define name="objref-content"> <attribute name="hlink"><data type="IDREF"/></attribute> <optional><attribute name="priv"> <ref name="priv-content"/> </attribute></optional> <zeroOrMore><element name="attribute"> <ref name="attribute-content"/> </element></zeroOrMore> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> <optional><element name="note"> <ref name="note-content"/> </element></optional> </define> <define name="lds-content"> <attribute name="type"><text/></attribute> <optional><ref name="date-content"/></optional> <optional><element name="temple"> <attribute name="val"><text/></attribute> </element></optional> <optional><element name="place"> <attribute name="hlink"><data type="IDREF"/></attribute> </element></optional> <optional><element name="status"> <attribute name="val"><text/></attribute> </element></optional> <optional><element name="sealed_to"> <attribute name="hlink"><data type="IDREF"/></attribute> </element></optional> <optional><element name="note"> <ref name="note-content"/> </element></optional> <optional><ref name="date-content"/></optional> <zeroOrMore><element name="sourceref"> <ref name="sourceref-content"/> </element></zeroOrMore> </define> </grammar>