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 *