Difference between revisions of "Nl:Een XML-bestand aanmaken"
(→Why doesn't GRAMPS just use a .gz extension?) |
|||
Line 1: | Line 1: | ||
− | [[Category:Nl:Hoe...]] | + | [[Category:Nl:Hoe...|Hoe...]] |
== GRAMPS en XML == | == GRAMPS en XML == |
Revision as of 10:20, 31 July 2007
Contents
GRAMPS en XML
GRAMPS kan een XML-bestand importeren en exporteren. Dit XML-bestand bevat alle informatie van het gegevensbestand. Dit XML-bestand is zeer bruikbaar om gegevens van de ene computer naar te andere over te zetten of om XML-bewerkingen uit te voeren.
Aanmaken van het XML-bestand
De eenvoudigste manier om een XML-bestand aan te maken is de gegevens te exporteren. Dit kan je doen door gebruik te maken van het Bestand->Exporteren menu. Zo wordt een bestand aangemaakt met een .gramps
extensie. Dit bestand is gewoonlijk een gezipt XML-bestand. Dit hangt echter af van een aantal systeeminstellingen. Zo kan het XML-bestand ook ongecomprimeerd opgeslagen worden.
Gramps drukt het bestand samen omdat XML-bestanden vrij groot kunnen worden. Voor grote gegevensbestanden kan de grootte oplopen tot méér dan 100 Mb. Gelukkig kunnen deze bestanden goed samengedrukt worden zodat de bestandsgrootte wel meevalt.
Hoe weet je of het XML-bestand samengedrukt is?
Het eenvoudigste is om de file
opdracht uit te voeren.
$ file data.gramps
Is het bestand samengedrukt, dan zie je als resultaat iets in de zin van:
data.gramps: gzip compressed data, from Unix, last modified: Sun Jun 17 22:36:04 2007
Is het bestand niet samengedrukt, dan zie je:
data.gramps: XML 1.0 document text
Hoe je een samengedrukt bestand hersteld?
Is het bestand samengedrukt, dan herstel je het bestand naar zijn oorspronkelijke grootte door de gunzip opdracht.
$ gunzip < data.gramps > data.xml
Dit voorbeeld maakt een niet-samengedrukt bestand data.xml
aan van een samengedrukt data.gramps
bestand.
Je moet de I/O operatoren (">" en "<"), omdat gzip
verwacht dat de bestanden een .gz
extensie hebben.
Ik ben in de war. Hoe bekom je nu een aanpasbaar XML-bestand vanuit een .gramps bestand?
Je kan eenvoudig het volgende bestand ophalen en dan het script draaien gramps2xml
. Maak dit script eerst uitvoerbaar:
chmod +x gramps2xml
Draai het script met:
./gramps2xml filename.gramps filename.xml
Waarom gebruikt GRAMPS niet gewoon een .gz extensie?
GRAMPS gebruikt het Shared Mime System opgesteld door het Free Desktop project. Dit is zo voor de meeste desktops met inbegrip van GNOME en KDE. GRAMPS gaat voort op het MIME-type om het bestandstype te bepalen.
Dit 'Share Mime System' laat toe om het bestandstype te bepalen, ofwel door naar de bestandsextensie te kijken, ofwel door naar de inhoud van een klein deeltje van het bestand te kijken. Een eerste probleem is dat de bestandsnaam of het extensiepatroon voorrang hebben op de inhoud. Stel, een bestand noemt iets.jpg
, dan is het hoogstwaarschijnlijk een JPEG beeld en geen tekst.
Indien nu het GRAMPS-XML-bestand een .gz
extensie zou bevatten, dan zou het 'Shared Mime system' ons zeggen dat het bestandstype application/x-gzip
is, i.p.v. de verwachte application/x-gramps-xml
.
Unfortunately, it cannot tell us that it is a gzip'd GRAMPS XML file.
The second problem is, if we looked at the contents, we would not be able to tell the difference between a gzip'd GRAMPS XML file or any other gzip'd file. If we looked at uncompressed data, we would not be able to tell the difference between a GRAMPS XML file and other XML files. So again, the Shared Mime system could not tell us that it is a gzip'd GRAMPS XML file.
For these reasons, we must rely on the .gramps
extension. If we don't, we would not be able to tell if this was a valid file. Even worse, the mime type of application/x-gzip
would be associated with another application (such as File Roller or Ark) instead of GRAMPS. The mime type of application/xml
may be associated with XML editors (Bluefish, Conglomerate, Emacs, etc). In that situation, the user double-clicking on the file in the file manager (or performing the default action for the type by any other means) will never launch GRAMPS with this data,
GRAMPS is not unique in this problem. For example, the OpenDocument format used by OpenOffice, KWord and AbiWord is actually a collection of files in a zip
archive. If you run unzip
on a OpenDocument file, you will see something like:
$ unzip test.odt Archive: test.odt inflating: mimetype inflating: meta.xml inflating: settings.xml inflating: META-INF/manifest.xml inflating: styles.xml inflating: content.xml