Difference between revisions of "Nl:Een XML-bestand aanmaken"

From Gramps
Jump to: navigation, search
(I am confused. How do I extract editable XML from .gramps file?)
(Waarom gebruikt Gramps niet gewoon een .gz extensie?)
 
(16 intermediate revisions by 3 users not shown)
Line 1: Line 1:
[[Category:Nl:Hoe...]]
+
{{languages|Generate XML|Een XML-bestand aanmaken}}
  
== 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.
+
== Gramps en XML ==
 +
 
 +
Gramps kan een XML-bestand importeren en exporteren. Dit [[GRAMPS_XML/nl|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 ===
 
=== 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 <code>.gramps</code> 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.
+
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 menu: {{man menu|Familiestambomen->Exporteren...}}. Zo wordt een bestand aangemaakt met een <code>.gramps</code> 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.
 
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? ===
+
=== Hoe weet u of het XML-bestand samengedrukt is? ===
  
 
Het eenvoudigste is om de <code>file</code> opdracht uit te voeren.
 
Het eenvoudigste is om de <code>file</code> opdracht uit te voeren.
Line 17: Line 18:
 
   $ file data.gramps
 
   $ file data.gramps
  
Is het bestand samengedrukt, dan zie je als resultaat iets in de zin van:
+
Is het bestand samengedrukt, dan ziet u als resultaat iets in de zin van:
  
   data.gramps: gzip compressed data, from Unix, last modified: Sun Jun 17 22:36:04 2007
+
   data.gramps: gzip compressed data, was "data.gramps", last modified: Sun Jul  8 17:05:09 2012, max compression
  
Is het bestand niet samengedrukt, dan zie je:
+
Is het bestand niet samengedrukt, dan ziet u:
  
   data.gramps: XML 1.0 document text
+
   data.xml: XML document text
  
=== Hoe je een samengedrukt bestand hersteld? ===
+
=== Hoe een samengedrukt bestand herstellen? ===
  
Is het bestand samengedrukt, dan herstel je het bestand naar zijn oorspronkelijke grootte door de <tt>gunzip</tt> opdracht.
+
Is het bestand samengedrukt, dan herstelt u het bestand naar zijn oorspronkelijke grootte door de <tt>gunzip</tt> opdracht.
  
 
   $ gunzip < data.gramps > data.xml
 
   $ gunzip < data.gramps > data.xml
Line 33: Line 34:
 
Dit voorbeeld maakt een niet-samengedrukt bestand <code>data.xml</code> aan van een samengedrukt <code>data.gramps</code> bestand.
 
Dit voorbeeld maakt een niet-samengedrukt bestand <code>data.xml</code> aan van een samengedrukt <code>data.gramps</code> bestand.
  
Je moet de I/O operatoren (">" en "<"), omdat <code>gzip</code> verwacht dat de bestanden een <code>.gz</code> extensie hebben.
+
U dient de I/O operatoren (">" en "<") te gebruiken, omdat <code>gzip</code> verwacht dat de bestanden een <code>.gz</code> extensie hebben.
  
=== Ik ben in de war. Hoe bekom je nu een aanpasbaar XML-bestand vanuit een .gramps bestand? ===
+
=== Ik ben in de war. Hoe bekom ik nu een aanpasbaar XML-bestand vanuit een .gramps bestand? ===
  
Je kan eenvoudig het volgende bestand ophalen en dan het script draaien [http://www.gramps-project.org/gramps2xml <code>gramps2xml</code>]. Maak dit script eerst uitvoerbaar:
+
U kunt eenvoudig het volgende bestand ophalen en dan het script draaien [[Media:Gramps2xml.gz|<code>gramps2xml</code>]]. Maak dit script eerst uitvoerbaar:
 
   chmod +x gramps2xml
 
   chmod +x gramps2xml
 
Draai het script met:
 
Draai het script met:
   ./gramps2xml filename.gramps filename.xml
+
   ./gramps2xml bestand.gramps filename.xml
  
== Why doesn't GRAMPS just use a .gz extension? ==
+
== Waarom gebruikt Gramps niet gewoon een .gz extensie? ==
  
GRAMPS uses the [http://freedesktop.org/wiki/Software/shared-mime-info Shared Mime System] defined by [http://freedesktop.org Free Desktop] project, and used by all major desktops, including KDE and GNOME. GRAMPS relies on the MIME type identified by the Shared Mime System to determine the file type of the file.
+
Gramps gebruikt het [http://freedesktop.org/wiki/Software/shared-mime-info Shared Mime System] opgesteld door het [http://freedesktop.org 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.
  
The Share Mime System allows you to identify a file's type by either using a file extension or by looking at the contents of a small section of the file. The first problem is, usually the filename or extension pattern has the higher priority compared to the contents: if the file is named <code>something.jpg</code> then it is likely to be JPEG image, not text. So if the GRAMPS XML file had added <code>.gz</code> extension to the name, the Shared Mime system would tell us that the file's type is <code>application/x-gzip</code> instead of the expected <code>application/x-gramps-xml</code>. Unfortunately, it cannot tell us that it is a gzip'd GRAMPS XML file.
+
Dit ''Share Mime'' systeem 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 <code>iets.jpg</code> , dan is het hoogstwaarschijnlijk een JPEG beeld en geen tekst.
  
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.
+
Indien nu het Gramps-Xml-bestand een <code>.gz</code> extensie zou bevatten, dan zou het 'Shared Mime system' ons zeggen dat  het bestandstype <code>application/x-gzip</code> is, i.p.v. de verwachte <code>application/x-gramps-xml</code>.
  
For these reasons, we must rely on the <code>.gramps</code> extension. If we don't, we would not be able to tell if this was a valid file. Even worse, the mime type of <code>application/x-gzip</code> would be associated with another application (such as File Roller or Ark) instead of GRAMPS. The mime type of <code>application/xml</code> 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,
+
Maar spijtig genoeg kan het systeem ons niet vertellen of we met een gezipt Gramps-Xml-bestand te maken hebben.
  
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 <code>zip</code> archive. If you run <code>unzip</code> on a OpenDocument file, you will see something like:
+
Het tweede probleem is dat wanneer we naar de inhoud van de bestanden kijken we ook geen verschil zien tussen een gezipt Gramps-Xml-bestand en een ander gezipt bestand. Wanneer we kijken naar een niet-samengedrukt bestand kunnen we ook hier nigeen verschil merken tussen een Gramps-Xml-bestand en een ander Xml-bestand. Dus hier ook kan het 'Shared Mime ' systeem ons niet verderhelpen.
 +
 
 +
Daarom moeten we ons baseren op de <code>.gramps</code> extensie.
 +
Zouden we dit niet doen dan kunnen we niet uitmaken of dit wel een geldig bestand is. Nog erger, het 'mime' <code>application/x-gzip</code> type zou geassocieerd worden met andere toepassingen (zoals File Roller of Ark) i.p.v. met Gramps. Het 'mime' type <code>application/xml</code> mag verbonden worden met XML-editors (Bluefish, Conglomerate, Emacs, enz.).
 +
In dit geval zal door dubbelklikken op het bestand in een file-manager zoals Nautilus (of het uitvoeren van een standaard vastgelegde aktie met andere programma's) zal dus nooit Gramps opstarten met deze gegevens.
 +
 
 +
Niet enkel Gramps kampt met dit probleem. Bijvoorbeeld, het 'OpenDocument'-formaat dat gebruikt wordt door [http://www.libreoffice.org/download LibreOffice], OpenOffice, StarOffice, [http://www.calligra-suite.org/ Calligra] en AbiWord is eigenlijk een bestandsverzameling in een <code>zip</code> archief.  
 +
 
 +
Wanneer u <code>unzip</code> uitvoert op een OpenDocument-bestand, ziet u het volgende:
  
 
   $ unzip test.odt
 
   $ unzip test.odt
Line 62: Line 71:
 
     inflating: styles.xml               
 
     inflating: styles.xml               
 
     inflating: content.xml
 
     inflating: content.xml
 +
 +
== Voorbeeld ==
 +
 +
[http://www.cohsoft.com.au/tmg2gramps/ tmg2gramps] is een programma geschreven om een familiestamboom van 'The Master Genealogist V6' naar Gramps-Xml om te zetten.
 +
 +
 +
{{languages|Generate XML|Een XML-bestand aanmaken}}
 +
 +
[[Category:Nl:Hoe...|XML bestand aanmaken]]

Latest revision as of 07:41, 12 February 2013


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 menu: Familiestambomen->Exporteren.... 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 u of het XML-bestand samengedrukt is?

Het eenvoudigste is om de file opdracht uit te voeren.

 $ file data.gramps

Is het bestand samengedrukt, dan ziet u als resultaat iets in de zin van:

 data.gramps: gzip compressed data, was "data.gramps", last modified: Sun Jul  8 17:05:09 2012, max compression

Is het bestand niet samengedrukt, dan ziet u:

 data.xml: XML document text

Hoe een samengedrukt bestand herstellen?

Is het bestand samengedrukt, dan herstelt u 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.

U dient de I/O operatoren (">" en "<") te gebruiken, omdat gzip verwacht dat de bestanden een .gz extensie hebben.

Ik ben in de war. Hoe bekom ik nu een aanpasbaar XML-bestand vanuit een .gramps bestand?

U kunt eenvoudig het volgende bestand ophalen en dan het script draaien gramps2xml. Maak dit script eerst uitvoerbaar:

  chmod +x gramps2xml

Draai het script met:

  ./gramps2xml bestand.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 systeem 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.

Maar spijtig genoeg kan het systeem ons niet vertellen of we met een gezipt Gramps-Xml-bestand te maken hebben.

Het tweede probleem is dat wanneer we naar de inhoud van de bestanden kijken we ook geen verschil zien tussen een gezipt Gramps-Xml-bestand en een ander gezipt bestand. Wanneer we kijken naar een niet-samengedrukt bestand kunnen we ook hier nigeen verschil merken tussen een Gramps-Xml-bestand en een ander Xml-bestand. Dus hier ook kan het 'Shared Mime ' systeem ons niet verderhelpen.

Daarom moeten we ons baseren op de .gramps extensie. Zouden we dit niet doen dan kunnen we niet uitmaken of dit wel een geldig bestand is. Nog erger, het 'mime' application/x-gzip type zou geassocieerd worden met andere toepassingen (zoals File Roller of Ark) i.p.v. met Gramps. Het 'mime' type application/xml mag verbonden worden met XML-editors (Bluefish, Conglomerate, Emacs, enz.). In dit geval zal door dubbelklikken op het bestand in een file-manager zoals Nautilus (of het uitvoeren van een standaard vastgelegde aktie met andere programma's) zal dus nooit Gramps opstarten met deze gegevens.

Niet enkel Gramps kampt met dit probleem. Bijvoorbeeld, het 'OpenDocument'-formaat dat gebruikt wordt door LibreOffice, OpenOffice, StarOffice, Calligra en AbiWord is eigenlijk een bestandsverzameling in een zip archief.

Wanneer u unzip uitvoert op een OpenDocument-bestand, ziet u het volgende:

 $ 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

Voorbeeld

tmg2gramps is een programma geschreven om een familiestamboom van 'The Master Genealogist V6' naar Gramps-Xml om te zetten.