Kopie des alten Systems

Dies ist eine alte Kopie des GenWiki und spiegelt den Stand vom 8. Mai 2022 wider.

This is an old copy of the GenWiki and reflects the status as of May 8, 2022. Please visit us at wiki.genealogy.net

GEDCOM-Validator

aus GenWiki, dem genealogischen Lexikon zum Mitmachen.

Wechseln zu: Navigation, Suche

Diese Seite wurde zum sofortigen Löschen vorgeschlagen. Dies ist keine Aufforderung zum Leeren der Seite, denn nur Administratoren können Seiten vollständig löschen. Bitte entferne deshalb diesen Hinweis nicht!
Einsprüche bitte auf diese Seite unterhalb der Begründung des Löschantrags schreiben.

Hinweis: Wenn du diesen Baustein eingefügt hast, kannst du den Autor der Seite auf dessen Diskussionsseite mit {{subst:Gelöscht|art=GEDCOM-Validator}} benachrichtigen.

Weiteres zum Thema Löschen im Hilfe-Artikel Löschvorschlag.

Lösch-LogbuchLinkliste

Begründung: Seit 13 Jahren hat sich hier nichts mehr getan und die Links funktionieren auch alle nicht mehr. --Hartenthaler 23:33, 10. Apr. 2022 (CEST)


Info

Dieser Artikel hat noch wenig Substanz und ist eventuell nur mit einer Struktur oder mit minimalen Informationen angelegt worden, um die weitere Bearbeitung zu erleichtern. Falls jemand gesicherte Informationen ergänzen kann – nur zu!

Benutzer:Jzedlitz hat 2009 begonnen, einen GEDCOM-Validator in Java/Grails zu implementieren. Hier soll die Doku für diesen geplanten Online-Validator für GEDCOM-Dateien von Benutzer:Jzedlitz entstehen. Daneben finden sich weitere Online-Validatoren in diesem Forenbeitrag sowie bei Chronoplex.

Idee der Validierung

Das Einlesen der Datei erfolgt datenstrom-basiert, da so unabhängig von der Größe der Eingabedatei ein nahezu konstanter Speicherverbrauch erreicht werden kann.

Die GEDCOM-Spezifikation nennt auf Seite 19

  • Strukturelemente in doppelten spitzen Klammern
  • Primitive in einfachen spitzen Klammern

Die Idee ist, für jedes Strukturelement eine gleichnamige Klasse zu schreiben, die den ihr zugehörigen Inhalt liest. Für Primitive gibt es (zunächst in einer einzigen Klasse) gleichnamige Methoden, die den Inhalt überprüfen.

Eine Klasse für Strukturelement soll folgende Felder bekommen:

singleTags
eine Liste aller Tags, die nur einmal innerhalb des Elements auftauchen dürfen
tagName
der Name des zum Element gehörenden Tags (z.B. "FAM" bei "FAM_RECORD")
isXref
gibt an, ob das Element Ziel einer XREF ist (z.B. FAM_RECORD und INDIVIDUAL_RECORD)
primitives
Liste aller Tags die ein Primitives (also direkt Text) enthalten mit Angabe des Namens des Primitiven
subStructures
eine Liste aller möglichen untergeordneten Strukturelemente. Hier ist es nicht notwendig, einen Tagnamen aufzuschreiben, da die Klasse des Strukturelements diesen Namen (ggf. auf verschiedene) enthält.

Bereits fertig

Geschrieben und mit Unittests versehen sind Methoden zum zeilenweisen Einlesen von GEDCOM-Dateien. src/groovy/net/genealogy/gedcomvalidator/GedcomReader.groovy Dort ist auch eine Methode enthalten, die den Zeichensatz einer GEDCOM-Datei bestimmen kann. Insbesondere UTF-16 kodierte Dateien sind nicht gleich auf Anhieb so einfach zu lesen.

Eine Testversion kann man sich hier ansehen: http://grails.genealogy.net/gedcom-validator/ Bislang wird nur ausgewertet, welcher Zeichensatz in der GEDCOM-Datei verwendet wird.

Programmcode

Programmcode
liegt im Subversion-Repository:
http://svn.genealogy.net/gedcom-validator/trunk/
Welche Bedeutung die einzelnen Felder haben, kann man in der Klasse LINEAGE_LINKED_GEDCOM nachlesen. Stöbern in anderen fertigen Definitionen (z.B. FAM_RECORD) hilft sicherlich auch...
Regeln für Strukturelemente
src/groovy/net/genealogy/gedcomvalidator/rules
Die eigentliche Überprüfung
findet in net.genealogy.gedcomvalidator.StructureElement statt. Die Klasse ist zwar etwas dokumentiert, aber vermutlich noch nicht genug.
Überprüfung des simple content (des Textes)
erfolgt in der Klasse Primitives.groovy im selben Verzeichnis. An den meisten Closures steht noch "TODO" dran.
Tests
Die Testdatei TGC551.ged wird fehlerfrei verarbeitet, was aber noch nicht heißt, dass nicht doch Fehler drin sind.
mitarbeiten?
Viele Klassen erben noch von "DummyStructureElement", dort wird das Element einfach nur übersprungen und ein entsprechender Eintrag in die Liste der nicht-überprüften Tags gemacht. Allerdings werden auch schon weitere Klassen bearbeitet, Aktivitäten bitte vorher mit Jesper abstimmen.
Persönliche Werkzeuge