Specificatie Genserver

advertisement
Specificatie Genserver
Genserver is opgesplitst in twee delen:


Data server
Web toepassingen
Data server:





Gedcom bestand snel kunnen inlezen
Onafhankelijkheid van Gedcom dialecten
Mysql database met simpele tabellen (records en relaties)
Snelle selectie van relevante records
XML presentatie van Gedcom data
Web toepassingen:
1. XML/XSL transformatie
2. Web pagina in Aldfaer stijl
1. XML/XSL transformatie:





Snelle presentatie
Alle opmaak zit in het XSL stylesheet
Stylesheets zijn eenvoudig te wisselen
Taal of Gedcom dialect problemen kunnen in de stylesheet opgelost worden
Opmaak van de pagina aan de gebruikers kant
2. Web pagina





Snelle presentatie
Gedcom dialect afhankelijk
Aldfaer lookalike. Alle velden worden gepresenteerd
Weinig mogelijkheden bij een specifieke zoekopdracht
Goede resultaten bij een brede zoekopdracht met wildcards
Genealogische programma’s:
In een genealogisch computer programma worden gegevens over familieleden, voorouders en
familierelaties als boomstructuur weergegeven. De gegevens zijn doorzoekbaar. Het door mij
gebruikte programma is Aldfaer. Dit programma kan verschillende rapporten produceren
waaronder een variant van een Gedcom 5.5 bestand.
Gedcom taal en dialecten:
Gedcom (versie 5.5) is een tekstbestand. Het bestand wordt gebruikt om informatie uit te
wisselen tussen verschillende genealogische programma’s. Het bestand is leesbaar in een
normale tekstverwerker. De structuur van het bestand is bedacht door “The Church of Latter
Day Saints” in Saltlake City. Deze organisatie staat ook wel bekend als de Mormonen. Deze
kerk maakt zich sterk voor het in kaart brengen van voorouders en het opslaan van hun
gegevens. Gedcom 5.5 is wereldwijd als standaard geaccepteerd. Er is een voorstel voor
Gedcom 6.0. Dit zal niet langer een ingesprongen tabel zijn maar volgt de XML standaard.
De Gedcom tekstopmaak:
Een gedcom bestand is opgebouwd uit regels en records. Elke regel begint met een cijfer
welke het niveau van de informatie aangeeft. Een record is een groep regels waarvan de eerste
regel met het cijfer nul begint. De volgende record begint daar waar de volgende regel weer
met een nul begint.
Records:
De eerste regel van een record bevat een ‘0’, een spatie, een ID nummer en een record type
aanduiding. De tweede regel begint altijd met een ‘1’, een data type en een waarde. Een
waarde kan een datum, tekst of een ID nummer zijn. ID nummers zijn herkenbaar aan de ‘@’
symbolen in de eerste en laatste positie.
Het is mogelijk om waarden te geven als toevoeging aan de voorgaande regel. In dat geval
wordt het nummer aan het begin van de regel met een verhoogd. Een volgende datablok
binnen de record zal opnieuw met een ‘1’ beginnen. Deze methode maakt het mogelijk om
informatie te nestelen en uit te breiden tot meer complexe structuren.
Gedcom bestand:
Meerdere opeenvolgende records vormen een Gedcom bestand. Er zijn verschillende soorten
records. Binnen de Gedcom standaard is het toegestaan om verschillende structuren aan te
houden. De ene software producent zal bijvoorbeeld de notities in de records onder te
brengen. De andere kiest voor notities in een aparte record. Software producenten houden
weinig rekening met dit soort variaties. Wanneer je Gedcom als een taal ziet kan je daarom
spreken van dialecten. Een bestand gemaakt in het ene programma kan niet zonder verlies van
informatie worden ingelezen in het andere.
Het eerste record van het bestand is de header. Deze regel bevat de tekst ‘0 HEAD’ zonder
waarde. De header bevat de persoonlijke gegevens van de opsteller en nadere gegevens over
de inhoud zoals het gebruikte programma en de karakterset.
De laatste regel van een Gedcom bestand is ‘0 TRLR’ zonder waarde.
<voorbeeld>waarde</voorbeeld>
XML
XML is een broertje van HTML dat voor de opmaak van webpagina’s zorgt. De tekstopmaak
wordt beïnvloed door zogenaamde teksthaken. Dit zijn commando’s die herkenbaar zijn aan
de gekantelde V symbolen aan weerzijden. De werking wordt opgeheven door het herhalen
van de teksthaak maar nu met een schuine streep in de tweede positie. Anders dan bij HTML
mag binnen XML de naam van de teksthaak vrij gekozen worden. Binnen de teksthaak mogen
meerdere parameters en waarden opgegeven worden. Om een XML bestand leesbaar te
maken is een beschrijvend document nodig. De waarde opgesloten door het woord
‘voorbeeld’ zou bijvoorbeeld aan de parameter ‘leeftijd’ toegekend kunnen worden. Dit moet
dan wel beschreven zijn. Een beschrijvend document is bijvoorbeeld een XSL stylesheet.
XSL stylesheet.
Een XSL stylesheet is zelf ook een XML document. Het geeft een beschrijving die kan
worden samengevat als ‘leesvoor of vervang door’. In het XML document wordt meestal
aangegeven waar het XSL document gevonden kan worden. Deze twee bestanden worden in
de computer van de ontvangende kant samengevoegd tot leesbare tekst. De combinatie tussen
XML en XSL kan bijvoorbeeld een HTML webpagina zijn.
Parsing:
Een andere methode om een XML bestand te gebruiken is het z.g.n. parsen. Er zijn twee
methoden. In de eerste wordt het hele bestand doorgenomen en eventueel uitgesplitst naar
tabellen. In de tweede methode blijft het bestand intact en kan gelijk aan een database
doorzocht worden.
Verbinding tussen webpagina en gedcom server.


De XML data wordt direct weergegeven
De XML data wordt onderhands doorgegeven aan een web toepassing.
Verschillen tussen XML en Gedcom
Hoewel de tekst anders lijkt zijn er weinig verschillen tussen XML en Gedcom. In beide
gevallen betreft het ingesprongen tekst. De teksthaken in XML nemen wel veel ruimte in
waardoor het bestand groter is dan een Gedcom bestand. Hoewel XML als een database
gelezen kan worden is het mijn ervaring dat een groot en complex XML bestand slecht
doorleesbaar is. Zoekopdrachten duren lang en er is een hoop geheugen ruimte nodig om het
bestand tijdelijk in op te slaan.
Mysql en PHP
Mysql is een gratis vervanger voor de SQL database. Een Mysql database kan meerdere
databases bevatten. Iedere database kan meerdere tabellen met meerdere kolommen bevatten.
De informatie uit deze database kan worden geput met een zoekvraag, een z.g.n. query. Deze
zoekvraag kent vaste afspraken maar bestaat uit leesbare tekst. Het resultaat van een
zoekvraag is een tabel. Deze tabel kan desgewenst serieel worden gelezen of worden omgezet
naar een data-array.
PHP is een z.g.n. ‘server side’ programmeer taal. Het is een taal die enigszins op ‘Javascript’
lijkt maar anders dan Java op de server wordt uitgevoerd. De instructies van Java worden na
ontvangst op de eigen computer uitgevoerd. PHP bevat uitgebreide mogelijkheden om met de
Mysql database gegevens uit te wisselen. De uitvoer van het PHP programma kan HTML zijn
waardoor de gebruiker alleen een webpagina voor zich ziet.
Overdracht van informatie tussen de gebruiker en het PHP programma.


GET. U ziet waarden in de adresbalk van uw webbrowser staan.
POST. De waarden worden in de header van uw verzoek opgeslagen.
Om handmatige invoer mogelijk te maken kies ik voor GET waarbij ik het volgnummer van
de database en het kaartnummer opgeef.
Proces:
1. Er wordt een PHP webpagina opgevraagd met daarbij een gedcom volgnummer en een
kaartnummer.
2. Het PHP programma vraagt aan de Mysql database welke serie records bij dit
kaartnummer hoort. Vervolgens wordt de database verzocht om de records te leveren.
3. De records worden aan elkaar geplakt tot een mini Gedcom bestand.
4. Het Gedcom bestand wordt vertaald naar XML.
5. Het XML document wordt op Internet gepubliceerd of…
6. Het XML document wordt doorgegeven aan de webtoepassing.
7. Alle relaties uit het bestand worden serieel doorzocht en in een tabel opgeslagen
8. In de linker kolom worden alle namen met de onderlinge relaties weergegeven. Door
het klikken op de naam kan naar de volgende kaart worden doorgeschakeld.
9. Het XML wordt in een z.g.n. Dom Parser opgeslagen. Voor ieder veld op de tabbladen
wordt de parser ondervraagd.
10. Er is een zoekpagina. De zoekvraag wordt omgezet in een Mysql query. Aan de
zoekvraag wordt het Gedcom naam-tag toegevoegd. Door het toevoegen van een *
Download