<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.bgbm.org/rebind_documentation/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DavidFichtmueller</id>
	<title>reBiND Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.bgbm.org/rebind_documentation/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DavidFichtmueller"/>
	<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php/Special:Contributions/DavidFichtmueller"/>
	<updated>2026-07-21T03:50:46Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=569</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=569"/>
		<updated>2014-05-08T09:57:27Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: /* Reading the data from the floppy */ added precedure to mount USB flash drive&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
== Setting up the drive and the computer ==&lt;br /&gt;
&lt;br /&gt;
1. Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
[[File:Comparison_Connector.jpg|thumb|right|500px]]&lt;br /&gt;
2. Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
&lt;br /&gt;
: The image shows the ends of two different floppy drive connectors. These ends are used to connect the cable to the motherboard. One of the connectors has a plastic knob on the long side, whereas the other one has none. This means that the connector on the right could be plugged in wrongly. If the connector doesn&#039;t have a plastic knob, but the socket has a notch for connectors that do have one, then the connector has to be plugged in with the two dents (which are present at both models) facing the side of the notch. &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Connecting the cable in the wrong way can destroy the floppy disk and make it unreadable and unusable.&amp;lt;/span&amp;gt;&lt;br /&gt;
3. Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
4. Close the computer case, connect all the necessary cables, including a network cable (to load the rescued files to a different computer later on) and start the computer.&lt;br /&gt;
&lt;br /&gt;
5. Setting the drive in the BIOS of the computer. This step greatly depends on the manufacturer and the model of the computer. The BIOS can usually be entered by either pressing &amp;quot;Del&amp;quot;, &amp;quot;Esc&amp;quot;, or one of the function keys (F1-F12). The new floppy drive has to be selected as one of the floppy drives of this computer. It is important to note whether it is selected as the primary or secondary floppy drive, as this might has an influence on the later steps. For this tutorial the 5.25&amp;quot; floppy drive was selected as the secondary floppy drive, since the already present 3.5&amp;quot; floppy drive remains selected as the primary floppy drive. &lt;br /&gt;
&lt;br /&gt;
6. The following steps for reading the data from the floppy drive where done using a Linux distribution called [http://www.damnsmalllinux.org/ Damn Small Linux (DSL)]. It is a small Linux system which can be run from a CD without installing any additional software. The following steps can however also be done using any other Linux system, regardless of whether it is run from a Live-CD or installed).&lt;br /&gt;
&lt;br /&gt;
7. Once Linux has booted, the user should open the Linux shell and create a directory &amp;quot;data&amp;quot; within the current home directory. The shell shortcut for the current home directory is &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; and on DSL the home directory is &amp;lt;code&amp;gt;/home/dsl/&amp;lt;/code&amp;gt;. The command to create that directory would therefore be: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;pre&amp;gt;mkdir /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. If it doesn&#039;t already exist, one should also create a directory in which the floppy drive can be mounted. On DSL the directory &amp;lt;code&amp;gt;/mnt/floppy&amp;lt;/code&amp;gt; already exists, but any other empty directory will work as well, e.g. &amp;lt;code&amp;gt;/home/dsl/floppy&amp;lt;/code&amp;gt;. So if one wants to use a different directory or the default directory doesn&#039;t exist, one can create a new directory analog to previous command.&lt;br /&gt;
&lt;br /&gt;
== Reading the data from the floppy ==&lt;br /&gt;
9. Mount the floppy drive. &lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mount -r -t msdos /dev/fd1 /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;sudo&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the command will be executed as the superuser.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;mount&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the actual mount command.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the drive is read-only.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-t msdos&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the floppy drive is DOS formatted. The alternative would be &amp;lt;code&amp;gt;-f ext2&amp;lt;/code&amp;gt; for Linux formatted floppies.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/dev/fd1&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the floppy device, if the floppy drive is selected as the secondary floppy drive. If the floppy drive is selected as the primary floppy drive, one has to use &amp;lt;code&amp;gt;/dev/fd0&amp;lt;/code&amp;gt;.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/mnt/floppy&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the directory to which the floppy disk will be mounted. &lt;br /&gt;
&lt;br /&gt;
10. Go to the directory where the floppy is mounted&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Show the content of the floppy&lt;br /&gt;
: &amp;lt;pre&amp;gt;ls -l&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. Copy the content of the floppy to the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; directory created previously.&lt;br /&gt;
: &amp;lt;pre&amp;gt;cp -r -p * /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the recursive mode, so subdirectories will be copied as well&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-p&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the preserve mode, which means that the timestamps, ownership status and access rights flags of the files will be preserved&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that all the files will be copied  &lt;br /&gt;
&lt;br /&gt;
13. Go to the home directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /home/dsl/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. Create a zip file of the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;zip -r data01.zip /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15. If further floppies need to be read, then remove all the files in the data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;rm -fr /home/dsl/data/*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16. Unmount the floppy drive.&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo umount /dev/fd1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to process further floppies, repeat the steps 9 to 16 and rename the zip file in step 14 accordingly.&lt;br /&gt;
&lt;br /&gt;
17. There are several ways to get the zip-files with the rescued data to another computer. &lt;br /&gt;
One could save the files on a flash drive or on the regular hard drive of the computer used (in both cases the drives need to be mounted with writing permission first).&lt;br /&gt;
* 17.1 Plug in the USB flash drive&lt;br /&gt;
* 17.2 figure out the adress of the drive, using the &amp;lt;code&amp;gt;dmesg&amp;lt;/code&amp;gt; command&lt;br /&gt;
: &amp;lt;pre&amp;gt;dmesg&amp;lt;/pre&amp;gt;&lt;br /&gt;
: at the end of the print out, there should be the log of the operating system recognizing the flash drive, which should look something like this:&lt;br /&gt;
   &amp;lt;pre&amp;gt;usb 1-5: new high speed USB device using ehci_hcd and address 2&lt;br /&gt;
scsi0 : SCSI emulation for USB Mass Storage devices&lt;br /&gt;
usb-storage: device found at 2&lt;br /&gt;
usb-storage: waiting for device to settle before scanning&lt;br /&gt;
  Vendor: USB 2.0   Model: USB Flash Drive   Rev: 1100&lt;br /&gt;
  Type:   Direct-Access                      ANSI SCSI revision: 04&lt;br /&gt;
SCSI device sda: 7975296 512-byte hdwr sectors (4083 MB)&lt;br /&gt;
sda: Write Protect is off&lt;br /&gt;
sda: Mode Sense: 43 00 00 00&lt;br /&gt;
sda: assuming drive cache: write through&lt;br /&gt;
SCSI device sda: 7975296 512-byte hdwr sectors (4083 MB)&lt;br /&gt;
sda: Write Protect is off&lt;br /&gt;
sda: Mode Sense: 43 00 00 00&lt;br /&gt;
sda: assuming drive cache: write through&lt;br /&gt;
 sda: sda1&lt;br /&gt;
Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0&lt;br /&gt;
usb-storage: device scan complete&amp;lt;/pre&amp;gt;&lt;br /&gt;
: in this case, the drive is attached to the block address &#039;&#039;&#039;&amp;lt;code&amp;gt;sda1&amp;lt;/code&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 17.4 create a directory to mount the USB drive to&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mkdir /mnt/usb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* 17.5 mount the usb drive&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mount -t vfat /dev/sda1 /mnt/usb&amp;lt;/pre&amp;gt;&lt;br /&gt;
* 17.6 copy the data to the flash drive&lt;br /&gt;
: &amp;lt;pre&amp;gt;cp data*.zip /mnt/usb/&amp;lt;/pre&amp;gt;&lt;br /&gt;
* 17.7 unmount the flash drive&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo umount /dev/sda1&amp;lt;/pre&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
* An alternative would be to upload the data to another computer via the LAN or the Internet. This could for example be done via FTP. The easiest way however will probably be just to upload the files via a web form to a web server from where the data can be retrieved later. This could be a specifically designed page for that purpose or a third party site, like webmail providers or file storage sites. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Once the Linux running from a Live-CD is shut down, all the data of the current session (including the data within the home directory) is lost unless it has been saved to a specified permanent storage drive (e.g. a flash drive or the regular hard drive of the current computer). By default running Linux from a Live-CD will not alter the host system. So do not shut the system down, unless the data has been copied or otherwise saved.&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=568</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=568"/>
		<updated>2014-05-07T07:45:08Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: /* Reading the data from the floppy */ command: this time it is correct&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
== Setting up the drive and the computer ==&lt;br /&gt;
&lt;br /&gt;
1. Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
[[File:Comparison_Connector.jpg|thumb|right|500px]]&lt;br /&gt;
2. Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
&lt;br /&gt;
: The image shows the ends of two different floppy drive connectors. These ends are used to connect the cable to the motherboard. One of the connectors has a plastic knob on the long side, whereas the other one has none. This means that the connector on the right could be plugged in wrongly. If the connector doesn&#039;t have a plastic knob, but the socket has a notch for connectors that do have one, then the connector has to be plugged in with the two dents (which are present at both models) facing the side of the notch. &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Connecting the cable in the wrong way can destroy the floppy disk and make it unreadable and unusable.&amp;lt;/span&amp;gt;&lt;br /&gt;
3. Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
4. Close the computer case, connect all the necessary cables, including a network cable (to load the rescued files to a different computer later on) and start the computer.&lt;br /&gt;
&lt;br /&gt;
5. Setting the drive in the BIOS of the computer. This step greatly depends on the manufacturer and the model of the computer. The BIOS can usually be entered by either pressing &amp;quot;Del&amp;quot;, &amp;quot;Esc&amp;quot;, or one of the function keys (F1-F12). The new floppy drive has to be selected as one of the floppy drives of this computer. It is important to note whether it is selected as the primary or secondary floppy drive, as this might has an influence on the later steps. For this tutorial the 5.25&amp;quot; floppy drive was selected as the secondary floppy drive, since the already present 3.5&amp;quot; floppy drive remains selected as the primary floppy drive. &lt;br /&gt;
&lt;br /&gt;
6. The following steps for reading the data from the floppy drive where done using a Linux distribution called [http://www.damnsmalllinux.org/ Damn Small Linux (DSL)]. It is a small Linux system which can be run from a CD without installing any additional software. The following steps can however also be done using any other Linux system, regardless of whether it is run from a Live-CD or installed).&lt;br /&gt;
&lt;br /&gt;
7. Once Linux has booted, the user should open the Linux shell and create a directory &amp;quot;data&amp;quot; within the current home directory. The shell shortcut for the current home directory is &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; and on DSL the home directory is &amp;lt;code&amp;gt;/home/dsl/&amp;lt;/code&amp;gt;. The command to create that directory would therefore be: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;pre&amp;gt;mkdir /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. If it doesn&#039;t already exist, one should also create a directory in which the floppy drive can be mounted. On DSL the directory &amp;lt;code&amp;gt;/mnt/floppy&amp;lt;/code&amp;gt; already exists, but any other empty directory will work as well, e.g. &amp;lt;code&amp;gt;/home/dsl/floppy&amp;lt;/code&amp;gt;. So if one wants to use a different directory or the default directory doesn&#039;t exist, one can create a new directory analog to previous command.&lt;br /&gt;
&lt;br /&gt;
== Reading the data from the floppy ==&lt;br /&gt;
9. Mount the floppy drive. &lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mount -r -t msdos /dev/fd1 /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;sudo&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the command will be executed as the superuser.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;mount&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the actual mount command.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the drive is read-only.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-t msdos&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the floppy drive is DOS formatted. The alternative would be &amp;lt;code&amp;gt;-f ext2&amp;lt;/code&amp;gt; for Linux formatted floppies.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/dev/fd1&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the floppy device, if the floppy drive is selected as the secondary floppy drive. If the floppy drive is selected as the primary floppy drive, one has to use &amp;lt;code&amp;gt;/dev/fd0&amp;lt;/code&amp;gt;.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/mnt/floppy&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the directory to which the floppy disk will be mounted. &lt;br /&gt;
&lt;br /&gt;
10. Go to the directory where the floppy is mounted&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Show the content of the floppy&lt;br /&gt;
: &amp;lt;pre&amp;gt;ls -l&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. Copy the content of the floppy to the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; directory created previously.&lt;br /&gt;
: &amp;lt;pre&amp;gt;cp -r -p * /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the recursive mode, so subdirectories will be copied as well&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-p&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the preserve mode, which means that the timestamps, ownership status and access rights flags of the files will be preserved&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that all the files will be copied  &lt;br /&gt;
&lt;br /&gt;
13. Go to the home directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /home/dsl/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. Create a zip file of the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;zip -r data01.zip /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15. If further floppies need to be read, then remove all the files in the data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;rm -fr /home/dsl/data/*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16. Unmount the floppy drive.&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo umount /dev/fd1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to process further floppies, repeat the steps 9 to 16 and rename the zip file in step 14 accordingly.&lt;br /&gt;
&lt;br /&gt;
17. There are several ways to get the zip-files with the rescued data to another computer. One could save the files on a flash drive or on the regular hard drive of the computer used (in both cases the drives need to be mounted with writing permission first). An alternative would be to upload the data to another computer via the LAN or the Internet. This could for example be done via FTP. The easiest way however will probably be just to upload the files via a web form to a web server from where the data can be retrieved later. This could be a specifically designed page for that purpose or a third party site, like webmail providers or file storage sites. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Once the Linux running from a Live-CD is shut down, all the data of the current session (including the data within the home directory) is lost unless it has been saved to a specified permanent storage drive (e.g. a flash drive or the regular hard drive of the current computer). By default running Linux from a Live-CD will not alter the host system. So do not shut the system down, unless the data has been copied or otherwise saved.&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=567</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=567"/>
		<updated>2014-05-07T07:43:45Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: /* Reading the data from the floppy */ command fixed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
== Setting up the drive and the computer ==&lt;br /&gt;
&lt;br /&gt;
1. Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
[[File:Comparison_Connector.jpg|thumb|right|500px]]&lt;br /&gt;
2. Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
&lt;br /&gt;
: The image shows the ends of two different floppy drive connectors. These ends are used to connect the cable to the motherboard. One of the connectors has a plastic knob on the long side, whereas the other one has none. This means that the connector on the right could be plugged in wrongly. If the connector doesn&#039;t have a plastic knob, but the socket has a notch for connectors that do have one, then the connector has to be plugged in with the two dents (which are present at both models) facing the side of the notch. &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Connecting the cable in the wrong way can destroy the floppy disk and make it unreadable and unusable.&amp;lt;/span&amp;gt;&lt;br /&gt;
3. Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
4. Close the computer case, connect all the necessary cables, including a network cable (to load the rescued files to a different computer later on) and start the computer.&lt;br /&gt;
&lt;br /&gt;
5. Setting the drive in the BIOS of the computer. This step greatly depends on the manufacturer and the model of the computer. The BIOS can usually be entered by either pressing &amp;quot;Del&amp;quot;, &amp;quot;Esc&amp;quot;, or one of the function keys (F1-F12). The new floppy drive has to be selected as one of the floppy drives of this computer. It is important to note whether it is selected as the primary or secondary floppy drive, as this might has an influence on the later steps. For this tutorial the 5.25&amp;quot; floppy drive was selected as the secondary floppy drive, since the already present 3.5&amp;quot; floppy drive remains selected as the primary floppy drive. &lt;br /&gt;
&lt;br /&gt;
6. The following steps for reading the data from the floppy drive where done using a Linux distribution called [http://www.damnsmalllinux.org/ Damn Small Linux (DSL)]. It is a small Linux system which can be run from a CD without installing any additional software. The following steps can however also be done using any other Linux system, regardless of whether it is run from a Live-CD or installed).&lt;br /&gt;
&lt;br /&gt;
7. Once Linux has booted, the user should open the Linux shell and create a directory &amp;quot;data&amp;quot; within the current home directory. The shell shortcut for the current home directory is &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; and on DSL the home directory is &amp;lt;code&amp;gt;/home/dsl/&amp;lt;/code&amp;gt;. The command to create that directory would therefore be: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;pre&amp;gt;mkdir /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. If it doesn&#039;t already exist, one should also create a directory in which the floppy drive can be mounted. On DSL the directory &amp;lt;code&amp;gt;/mnt/floppy&amp;lt;/code&amp;gt; already exists, but any other empty directory will work as well, e.g. &amp;lt;code&amp;gt;/home/dsl/floppy&amp;lt;/code&amp;gt;. So if one wants to use a different directory or the default directory doesn&#039;t exist, one can create a new directory analog to previous command.&lt;br /&gt;
&lt;br /&gt;
== Reading the data from the floppy ==&lt;br /&gt;
9. Mount the floppy drive. &lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mount -r -f msdos /dev/fd1 /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;sudo&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the command will be executed as the superuser.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;mount&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the actual mount command.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the drive is read-only.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-f msdos&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the floppy drive is DOS formatted. The alternative would be &amp;lt;code&amp;gt;-f ext2&amp;lt;/code&amp;gt; for Linux formatted floppies.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/dev/fd1&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the floppy device, if the floppy drive is selected as the secondary floppy drive. If the floppy drive is selected as the primary floppy drive, one has to use &amp;lt;code&amp;gt;/dev/fd0&amp;lt;/code&amp;gt;.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/mnt/floppy&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the directory to which the floppy disk will be mounted. &lt;br /&gt;
&lt;br /&gt;
10. Go to the directory where the floppy is mounted&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Show the content of the floppy&lt;br /&gt;
: &amp;lt;pre&amp;gt;ls -l&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. Copy the content of the floppy to the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; directory created previously.&lt;br /&gt;
: &amp;lt;pre&amp;gt;cp -r -p * /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the recursive mode, so subdirectories will be copied as well&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-p&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the preserve mode, which means that the timestamps, ownership status and access rights flags of the files will be preserved&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that all the files will be copied  &lt;br /&gt;
&lt;br /&gt;
13. Go to the home directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /home/dsl/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. Create a zip file of the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;zip -r data01.zip /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15. If further floppies need to be read, then remove all the files in the data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;rm -fr /home/dsl/data/*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16. Unmount the floppy drive.&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo umount /dev/fd1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to process further floppies, repeat the steps 9 to 16 and rename the zip file in step 14 accordingly.&lt;br /&gt;
&lt;br /&gt;
17. There are several ways to get the zip-files with the rescued data to another computer. One could save the files on a flash drive or on the regular hard drive of the computer used (in both cases the drives need to be mounted with writing permission first). An alternative would be to upload the data to another computer via the LAN or the Internet. This could for example be done via FTP. The easiest way however will probably be just to upload the files via a web form to a web server from where the data can be retrieved later. This could be a specifically designed page for that purpose or a third party site, like webmail providers or file storage sites. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Once the Linux running from a Live-CD is shut down, all the data of the current session (including the data within the home directory) is lost unless it has been saved to a specified permanent storage drive (e.g. a flash drive or the regular hard drive of the current computer). By default running Linux from a Live-CD will not alter the host system. So do not shut the system down, unless the data has been copied or otherwise saved.&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Best_Practice_Handbook&amp;diff=5</id>
		<title>Best Practice Handbook</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Best_Practice_Handbook&amp;diff=5"/>
		<updated>2012-12-21T14:46:35Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: a bit more specific on some chapters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
*about reBiND&lt;br /&gt;
*how to use this book&lt;br /&gt;
&lt;br /&gt;
==System Installation==&lt;br /&gt;
* Installing BioCASe Provider Software&lt;br /&gt;
* Installing eXist&lt;br /&gt;
* Installing reBiND Framework&lt;br /&gt;
* [[ReBiND Framework Configuration Steps|Configuring eXist/reBiND Framework]]&lt;br /&gt;
* Using a custom data format&lt;br /&gt;
* Using the Correction Tool&lt;br /&gt;
** Documentation of [[Correction Modules]]&lt;br /&gt;
* Writing Custom Correction Modules&lt;br /&gt;
* Using a different metadata format&lt;br /&gt;
&lt;br /&gt;
==Technical Background==&lt;br /&gt;
*eXist&lt;br /&gt;
*XQuery&lt;br /&gt;
*ABCD&lt;br /&gt;
*EML&lt;br /&gt;
&lt;br /&gt;
==Data Archiving==&lt;br /&gt;
*workflow&lt;br /&gt;
** Data Preparation&lt;br /&gt;
** XML Export&lt;br /&gt;
** Import to reBiND Framework&lt;br /&gt;
** Run Corrections&lt;br /&gt;
** data review by the scientist&lt;br /&gt;
** enter metadata&lt;br /&gt;
** publish&lt;br /&gt;
&lt;br /&gt;
==Best Practice Documentation==&lt;br /&gt;
* [[Retrieving Geocoordinates From Points In Images]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Data Rescue, Preparation==&lt;br /&gt;
*data formats&lt;br /&gt;
** [[Identifying Unknown File Formats]]&lt;br /&gt;
** Conversion for [[File Type Overview|selected file formats]]&lt;br /&gt;
*** [[Export DataPerfect|DataPerfect]]&lt;br /&gt;
*** [[Export Paradox Data|Paradox]]&lt;br /&gt;
*** [[Export dBase Data|dBase]]&lt;br /&gt;
*** Harvard Graphics&lt;br /&gt;
*** Word 3 for DOS&lt;br /&gt;
** Document new data formats for others&lt;br /&gt;
* hardware&lt;br /&gt;
** 3.5&amp;quot; Floppies&lt;br /&gt;
** [[Reading 5.25&amp;quot; Floppy Disks|5.25 &amp;quot; Floppies]]&lt;br /&gt;
*preparation&lt;br /&gt;
&lt;br /&gt;
==Case Studies==&lt;br /&gt;
&lt;br /&gt;
== Related Software Products ==&lt;br /&gt;
* Data Splitter&lt;br /&gt;
* Character Encoding Correcter&lt;br /&gt;
* Stand-alone Correction Manager&lt;br /&gt;
&lt;br /&gt;
==Glossary==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=File_Type_Overview&amp;diff=543</id>
		<title>File Type Overview</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=File_Type_Overview&amp;diff=543"/>
		<updated>2012-12-04T13:49:52Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: Harvard Graphics and Word 4 described&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a collection of various file types and how they can be treated and opened.&lt;br /&gt;
== Harvard Graphics ==&lt;br /&gt;
Harvard Graphics used to be the predominant software for creating presentations. The latest version of the software is still sold: http://www.harvardgraphics.com/. On the webpage the company also offers a free tool to open more recent Harvard Graphics files there: [http://www.harvardgraphics.com/hg-viewer-download.asp Harvard Graphics Viewer]. However it only works for some file types. &lt;br /&gt;
&lt;br /&gt;
Files from Harvard Graphics DOS 2.0 and 3.0 can be opened with the original software, which can be downloaded as abandonware at http://vetusware.com/download/Harvard%20Graphics%203.0/?id=4017 and installed using [http://www.dosbox.com/ DOSBOX] (see also the article [[Export_DataPerfect#Install_and_run_DOSBox|Export DataPerfect]]). However, be aware that [[http://en.wikipedia.org/wiki/Abandonware abondonware]] is a legal gray area. &lt;br /&gt;
&lt;br /&gt;
== Word 4 ==&lt;br /&gt;
Word 4 (DOS) files can&#039;t be opened natively with the current versions of Microsoft Word anymore. However it is possible to import Word 4 files with an additional converter for word.&lt;br /&gt;
# Download the file ftp://ftp.microsoft.com/Softlib/MSLFILES/WDSUPCNV.EXE, open it (it is a self extracting zip file) and select a directory to save the files.&lt;br /&gt;
# Copy all the resulting *.cnv files (but most importantly &amp;lt;code&amp;gt;Doswrd32.cnv&amp;lt;/code&amp;gt;) to &amp;lt;code&amp;gt;C:\Program Files (x86)\Common Files\microsoft shared\TextConv&amp;lt;/code&amp;gt; (For users with a 32-bit Windows it is just &amp;lt;code&amp;gt;C:\Program Files\Common Files\microsoft shared\TextConv&amp;lt;/code&amp;gt;)&lt;br /&gt;
# (Re)Start Microsoft Word&lt;br /&gt;
# Open the Word 4 file via the Open-dialog within Word.&lt;br /&gt;
# Word will show a prompt informing you that a text converter has to be started and that this might impose a security risk which you should only do if you trust the source where you got the files from. Press OK (if you trust the source of the files).&lt;br /&gt;
# Word will most likely show a prompt like &amp;quot;Style Sheet D:/STANDARD.DFV not found&amp;quot;. Press Ok. Now a file selector dialog will open asking you to select a style sheet (*.sty) file. If you do have a style sheet for the file (somewhere among the rescued data) then select this. Otherwise create a new empty file in the regular Windows Explorer, rename it &amp;quot;empty.sty&amp;quot; and select it in the file selector. Selecting such an empty file could cause opened file to loose some general properties like print margins etc.&lt;br /&gt;
# Now you should be able to see the Word 4 file within the modern Microsoft Word&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=566</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=566"/>
		<updated>2012-12-04T13:01:30Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: small corrections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
== Setting up the drive and the computer ==&lt;br /&gt;
&lt;br /&gt;
1. Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
[[File:Comparison_Connector.jpg|thumb|right|500px]]&lt;br /&gt;
2. Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
&lt;br /&gt;
: The image shows the ends of two different floppy drive connectors. These ends are used to connect the cable to the motherboard. One of the connectors has a plastic knob on the long side, whereas the other one has none. This means that the connector on the right could be plugged in wrongly. If the connector doesn&#039;t have a plastic knob, but the socket has a notch for connectors that do have one, then the connector has to be plugged in with the two dents (which are present at both models) facing the side of the notch. &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Connecting the cable in the wrong way can destroy the floppy disk and make it unreadable and unusable.&amp;lt;/span&amp;gt;&lt;br /&gt;
3. Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
4. Close the computer case, connect all the necessary cables, including a network cable (to load the rescued files to a different computer later on) and start the computer.&lt;br /&gt;
&lt;br /&gt;
5. Setting the drive in the BIOS of the computer. This step greatly depends on the manufacturer and the model of the computer. The BIOS can usually be entered by either pressing &amp;quot;Del&amp;quot;, &amp;quot;Esc&amp;quot;, or one of the function keys (F1-F12). The new floppy drive has to be selected as one of the floppy drives of this computer. It is important to note whether it is selected as the primary or secondary floppy drive, as this might has an influence on the later steps. For this tutorial the 5.25&amp;quot; floppy drive was selected as the secondary floppy drive, since the already present 3.5&amp;quot; floppy drive remains selected as the primary floppy drive. &lt;br /&gt;
&lt;br /&gt;
6. The following steps for reading the data from the floppy drive where done using a Linux distribution called [http://www.damnsmalllinux.org/ Damn Small Linux (DSL)]. It is a small Linux system which can be run from a CD without installing any additional software. The following steps can however also be done using any other Linux system, regardless of whether it is run from a Live-CD or installed).&lt;br /&gt;
&lt;br /&gt;
7. Once Linux has booted, the user should open the Linux shell and create a directory &amp;quot;data&amp;quot; within the current home directory. The shell shortcut for the current home directory is &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; and on DSL the home directory is &amp;lt;code&amp;gt;/home/dsl/&amp;lt;/code&amp;gt;. The command to create that directory would therefore be: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;pre&amp;gt;mkdir /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. If it doesn&#039;t already exist, one should also create a directory in which the floppy drive can be mounted. On DSL the directory &amp;lt;code&amp;gt;/mnt/floppy&amp;lt;/code&amp;gt; already exists, but any other empty directory will work as well, e.g. &amp;lt;code&amp;gt;/home/dsl/floppy&amp;lt;/code&amp;gt;. So if one wants to use a different directory or the default directory doesn&#039;t exist, one can create a new directory analog to previous command.&lt;br /&gt;
&lt;br /&gt;
== Reading the data from the floppy ==&lt;br /&gt;
9. Mount the floppy drive. &lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mount -r -t msdos /dev/fd1 /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;sudo&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the command will be executed as the superuser.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;mount&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the actual mount command.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the drive is read-only.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-f msdos&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the floppy drive is DOS formatted. The alternative would be &amp;lt;code&amp;gt;-f ext2&amp;lt;/code&amp;gt; for Linux formatted floppies.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/dev/fd1&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the floppy device, if the floppy drive is selected as the secondary floppy drive. If the floppy drive is selected as the primary floppy drive, one has to use &amp;lt;code&amp;gt;/dev/fd0&amp;lt;/code&amp;gt;.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/mnt/floppy&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the directory to which the floppy disk will be mounted. &lt;br /&gt;
&lt;br /&gt;
10. Go to the directory where the floppy is mounted&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. Show the content of the floppy&lt;br /&gt;
: &amp;lt;pre&amp;gt;ls -l&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. Copy the content of the floppy to the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; directory created previously.&lt;br /&gt;
: &amp;lt;pre&amp;gt;cp -r -p * /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the recursive mode, so subdirectories will be copied as well&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-p&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the preserve mode, which means that the timestamps, ownership status and access rights flags of the files will be preserved&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that all the files will be copied  &lt;br /&gt;
&lt;br /&gt;
13. Go to the home directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /home/dsl/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. Create a zip file of the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;zip -r data01.zip /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15. If further floppies need to be read, then remove all the files in the data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;rm -fr /home/dsl/data/*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16. Unmount the floppy drive.&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo umount /dev/fd1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to process further floppies, repeat the steps 9 to 16 and rename the zip file in step 14 accordingly.&lt;br /&gt;
&lt;br /&gt;
17. There are several ways to get the zip-files with the rescued data to another computer. One could save the files on a flash drive or on the regular hard drive of the computer used (in both cases the drives need to be mounted with writing permission first). An alternative would be to upload the data to another computer via the LAN or the Internet. This could for example be done via FTP. The easiest way however will probably be just to upload the files via a web form to a web server from where the data can be retrieved later. This could be a specifically designed page for that purpose or a third party site, like webmail providers or file storage sites. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Once the Linux running from a Live-CD is shut down, all the data of the current session (including the data within the home directory) is lost unless it has been saved to a specified permanent storage drive (e.g. a flash drive or the regular hard drive of the current computer). By default running Linux from a Live-CD will not alter the host system. So do not shut the system down, unless the data has been copied or otherwise saved.&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=565</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=565"/>
		<updated>2012-12-04T13:00:04Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: numbering corrected&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
== Setting up the drive and the computer ==&lt;br /&gt;
&lt;br /&gt;
1. Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
[[File:Comparison_Connector.jpg|thumb|right|500px]]&lt;br /&gt;
2. Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
&lt;br /&gt;
: The image shows the ends of two different floppy drive connectors. These ends are used to connect the cable to the motherboard. One of the connectors has a plastic knob on the long side, whereas the other one has none. This means that the connector on the right could be plugged in wrongly. If the connector doesn&#039;t have a plastic knob, but the socket has a notch for connectors that do have one, then the connector has to be plugged in with the two dents (which are present at both models) facing the side of the notch. &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Connecting the cable in the wrong way can destroy the floppy disk and make it unreadable and unusable.&amp;lt;/span&amp;gt;&lt;br /&gt;
3. Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
4. Close the computer case, connect all the necessary cables, including a network cable (to load the rescued files to a different computer later on) and start the computer.&lt;br /&gt;
&lt;br /&gt;
5. Setting the drive in the BIOS of the computer. This step greatly depends on the manufacturer and the model of the computer. The BIOS can usually be entered by either pressing &amp;quot;Del&amp;quot;, &amp;quot;Esc&amp;quot;, or one of the function keys (F1-F12). The new floppy drive has to be selected as one of the floppy drives of this computer. It is important to note whether it is selected as the primary or secondary floppy drive, as this might has an influence on the later steps. For this tutorial the 5.25&amp;quot; floppy drive was selected as the secondary floppy drive, since the already present 3.5&amp;quot; floppy drive remains selected as the primary floppy drive. &lt;br /&gt;
&lt;br /&gt;
6. The following steps for reading the data from the floppy drive where done using a Linux distribution called [http://www.damnsmalllinux.org/ Damn Small Linux (DSL)]. It is a small Linux system which can be run from a CD without installing any additional software. The following steps can however also be done using any other Linux system, regardless of whether it is run from a Live-CD or installed).&lt;br /&gt;
&lt;br /&gt;
7. Once Linux has booted, the user should open the Linux shell and create a directory &amp;quot;data&amp;quot; within the current home directory. The shell shortcut for the current home directory is &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; and on DSL the home directory is &amp;lt;code&amp;gt;/home/dsl/&amp;lt;/code&amp;gt;. The command to create that directory would therefore be: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;pre&amp;gt;mkdir /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. If it doesn&#039;t already exist, one should also create a directory in which the floppy drive can be mounted. On DSL the directory &amp;lt;code&amp;gt;/mnt/floppy&amp;lt;/code&amp;gt; already exists, but any other empty directory will work as well, e.g. &amp;lt;code&amp;gt;/home/dsl/floppy&amp;lt;/code&amp;gt;. So if one wants to use a different directory or the default directory doesn&#039;t exist, one can create a new directory analog to previous command.&lt;br /&gt;
&lt;br /&gt;
== Reading the data from the floppy ==&lt;br /&gt;
9. Next the step would be to mount the floppy drive. &lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mount -r -t msdos /dev/fd1 /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;sudo&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the command will be executed as the superuser.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;mount&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the actual mount command.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the drive is read-only.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-f msdos&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the floppy drive is DOS formatted. The alternative would be &amp;lt;code&amp;gt;-f ext2&amp;lt;/code&amp;gt; for Linux formatted floppies.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/dev/fd1&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the floppy device, if the floppy drive is selected as the secondary floppy drive. If the floppy drive is selected as the primary floppy drive, one has to use &amp;lt;code&amp;gt;/dev/fd0&amp;lt;/code&amp;gt;.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/mnt/floppy&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the directory to which the floppy disk will be mounted. &lt;br /&gt;
&lt;br /&gt;
10. Go to the directory where the floppy is mounted&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. show the content of the floppy&lt;br /&gt;
: &amp;lt;pre&amp;gt;ls -l&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. copy the content of the floppy to the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; directory created previously.&lt;br /&gt;
: &amp;lt;pre&amp;gt;cp -r -p * /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the recursive mode, so subdirectories will be copied as well&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-p&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the preserve mode, which means that the timestamps, ownership status and access rights flags of the files will be preserved&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that all the files will be copied  &lt;br /&gt;
&lt;br /&gt;
13. go to the home directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /home/dsl/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. create a zip file of the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;zip -r data01.zip /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15. If further floppies need to be read, then remove all the files in the data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;rm -fr /home/dsl/data/*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16. unmount the floppy drive.&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo umount /dev/fd1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to process further floppies, repeat the steps 9 to 16 and rename the zip file in step 14 accordingly.&lt;br /&gt;
&lt;br /&gt;
17. There are several ways to get the zip-files with the rescued data to another computer. One could save the files on a flash drive or on the regular hard drive of the computer used (in both cases the drives need to be mounted with writing permission first). An alternative would be to upload the data to another computer via the LAN or the Internet. This could for example be done via FTP. The easiest way however will probably be just to upload the files via a web form to a web server from where the data can be retrieved later. This could be a specifically designed page for that purpose or a third party site, like webmail providers or file storage sites. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Once the Linux running from a Live-CD is shut down, all the data of the current session (including the data within the home directory) is lost unless it has been saved to a specified permanent storage drive (e.g. a flash drive or the regular hard drive of the current computer). By default running Linux from a Live-CD will not alter the host system. So do not shut the system down, unless the data has been copied or otherwise saved.&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=564</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=564"/>
		<updated>2012-12-04T12:59:31Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: added section: saving the rescued files&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
== Setting up the drive and the computer ==&lt;br /&gt;
&lt;br /&gt;
1. Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
[[File:Comparison_Connector.jpg|thumb|right|500px]]&lt;br /&gt;
2. Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
&lt;br /&gt;
: The image shows the ends of two different floppy drive connectors. These ends are used to connect the cable to the motherboard. One of the connectors has a plastic knob on the long side, whereas the other one has none. This means that the connector on the right could be plugged in wrongly. If the connector doesn&#039;t have a plastic knob, but the socket has a notch for connectors that do have one, then the connector has to be plugged in with the two dents (which are present at both models) facing the side of the notch. &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Connecting the cable in the wrong way can destroy the floppy disk and make it unreadable and unusable.&amp;lt;/span&amp;gt;&lt;br /&gt;
3. Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
4. Close the computer case, connect all the necessary cables, including a network cable (to load the rescued files to a different computer later on) and start the computer.&lt;br /&gt;
&lt;br /&gt;
5. Setting the drive in the BIOS of the computer. This step greatly depends on the manufacturer and the model of the computer. The BIOS can usually be entered by either pressing &amp;quot;Del&amp;quot;, &amp;quot;Esc&amp;quot;, or one of the function keys (F1-F12). The new floppy drive has to be selected as one of the floppy drives of this computer. It is important to note whether it is selected as the primary or secondary floppy drive, as this might has an influence on the later steps. For this tutorial the 5.25&amp;quot; floppy drive was selected as the secondary floppy drive, since the already present 3.5&amp;quot; floppy drive remains selected as the primary floppy drive. &lt;br /&gt;
&lt;br /&gt;
6. The following steps for reading the data from the floppy drive where done using a Linux distribution called [http://www.damnsmalllinux.org/ Damn Small Linux (DSL)]. It is a small Linux system which can be run from a CD without installing any additional software. The following steps can however also be done using any other Linux system, regardless of whether it is run from a Live-CD or installed).&lt;br /&gt;
&lt;br /&gt;
7. Once Linux has booted, the user should open the Linux shell and create a directory &amp;quot;data&amp;quot; within the current home directory. The shell shortcut for the current home directory is &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; and on DSL the home directory is &amp;lt;code&amp;gt;/home/dsl/&amp;lt;/code&amp;gt;. The command to create that directory would therefore be: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;pre&amp;gt;mkdir /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
8. If it doesn&#039;t already exist, one should also create a directory in which the floppy drive can be mounted. On DSL the directory &amp;lt;code&amp;gt;/mnt/floppy&amp;lt;/code&amp;gt; already exists, but any other empty directory will work as well, e.g. &amp;lt;code&amp;gt;/home/dsl/floppy&amp;lt;/code&amp;gt;. So if one wants to use a different directory or the default directory doesn&#039;t exist, one can create a new directory analog to previous command.&lt;br /&gt;
&lt;br /&gt;
== Reading the data from the floppy ==&lt;br /&gt;
9. Next the step would be to mount the floppy drive. &lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mount -r -t msdos /dev/fd1 /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;sudo&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the command will be executed as the superuser.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;mount&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the actual mount command.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the drive is read-only.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-f msdos&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the floppy drive is DOS formatted. The alternative would be &amp;lt;code&amp;gt;-f ext2&amp;lt;/code&amp;gt; for Linux formatted floppies.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/dev/fd1&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the floppy device, if the floppy drive is selected as the secondary floppy drive. If the floppy drive is selected as the primary floppy drive, one has to use &amp;lt;code&amp;gt;/dev/fd0&amp;lt;/code&amp;gt;.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/mnt/floppy&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the directory to which the floppy disk will be mounted. &lt;br /&gt;
&lt;br /&gt;
10. Go to the directory where the floppy is mounted&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. show the content of the floppy&lt;br /&gt;
: &amp;lt;pre&amp;gt;ls -l&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
12. copy the content of the floppy to the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; directory created previously.&lt;br /&gt;
: &amp;lt;pre&amp;gt;cp -r -p * /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the recursive mode, so subdirectories will be copied as well&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-p&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the preserve mode, which means that the timestamps, ownership status and access rights flags of the files will be preserved&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that all the files will be copied  &lt;br /&gt;
&lt;br /&gt;
13. go to the home directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /home/dsl/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. create a zip file of the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;zip -r data01.zip /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15. If further floppies need to be read, then remove all the files in the data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;rm -fr /home/dsl/data/*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
16. unmount the floppy drive.&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo umount /dev/fd1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to process further floppies, repeat the steps 8 to 15 and rename the zip file in step 13 accordingly.&lt;br /&gt;
&lt;br /&gt;
17. There are several ways to get the zip-files with the rescued data to another computer. One could save the files on a flash drive or on the regular hard drive of the computer used (in both cases the drives need to be mounted with writing permission first). An alternative would be to upload the data to another computer via the LAN or the Internet. This could for example be done via FTP. The easiest way however will probably be just to upload the files via a web form to a web server from where the data can be retrieved later. This could be a specifically designed page for that purpose or a third party site, like webmail providers or file storage sites. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Once the Linux running from a Live-CD is shut down, all the data of the current session (including the data within the home directory) is lost unless it has been saved to a specified permanent storage drive (e.g. a flash drive or the regular hard drive of the current computer). By default running Linux from a Live-CD will not alter the host system. So do not shut the system down, unless the data has been copied or otherwise saved.&amp;lt;/span&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=563</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=563"/>
		<updated>2012-12-04T12:44:05Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: initial version finished&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
== Setting up the drive and the computer ==&lt;br /&gt;
&lt;br /&gt;
1. Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
[[File:Comparison_Connector.jpg|thumb|right|500px]]&lt;br /&gt;
2. Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
&lt;br /&gt;
: The image shows the ends of two different floppy drive connectors. These ends are used to connect the cable to the motherboard. One of the connectors has a plastic knob on the long side, whereas the other one has none. This means that the connector on the right could be plugged in wrongly. If the connector doesn&#039;t have a plastic knob, but the socket has a notch for connectors that do have one, then the connector has to be plugged in with the two dents (which are present at both models) facing the side of the notch. &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Connecting the cable in the wrong way can destroy the floppy disk and make it unreadable and unusable.&amp;lt;/span&amp;gt;&lt;br /&gt;
3. Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
4. Setting the drive in the BIOS of the computer. This step greatly depends on the manufacturer and the model of the computer. The BIOS can usually be entered by either pressing &amp;quot;Del&amp;quot;, &amp;quot;Esc&amp;quot;, or one of the function keys (F1-F12). The new floppy drive has to be selected as one of the floppy drives of this computer. It is important to note whether it is selected as the primary or secondary floppy drive, as this might has an influence on the later steps. For this tutorial the 5.25&amp;quot; floppy drive was selected as the secondary floppy drive, since the already present 3.5&amp;quot; floppy drive remains selected as the primary floppy drive. &lt;br /&gt;
&lt;br /&gt;
5. The following steps for reading the data from the floppy drive where done using a Linux distribution called [http://www.damnsmalllinux.org/ Damn Small Linux (DSL)]. It is a small Linux system which can be run from a CD without installing any additional software. The following steps can however also be done using any other Linux system, regardless of whether it is run from a Live-CD or installed).&lt;br /&gt;
&lt;br /&gt;
6. Once Linux has booted, the user should open the Linux shell and create a directory &amp;quot;data&amp;quot; within the current home directory. The shell shortcut for the current home directory is &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; and on DSL the home directory is &amp;lt;code&amp;gt;/home/dsl/&amp;lt;/code&amp;gt;. The command to create that directory would therefore be: &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;pre&amp;gt;mkdir /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
7. If it doesn&#039;t already exist, one should also create a directory in which the floppy drive can be mounted. On DSL the directory &amp;lt;code&amp;gt;/mnt/floppy&amp;lt;/code&amp;gt; already exists, but any other empty directory will work as well, e.g. &amp;lt;code&amp;gt;/home/dsl/floppy&amp;lt;/code&amp;gt;. So if one wants to use a different directory or the default directory doesn&#039;t exist, one can create a new directory analog to previous command.&lt;br /&gt;
&lt;br /&gt;
== Reading the data from the floppy ==&lt;br /&gt;
8. Next the step would be to mount the floppy drive. &lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo mount -r -t msdos /dev/fd1 /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;sudo&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the command will be executed as the superuser.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;mount&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the actual mount command.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the drive is read-only.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-f msdos&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the floppy drive is DOS formatted. The alternative would be &amp;lt;code&amp;gt;-f ext2&amp;lt;/code&amp;gt; for Linux formatted floppies.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/dev/fd1&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the floppy device, if the floppy drive is selected as the secondary floppy drive. If the floppy drive is selected as the primary floppy drive, one has to use &amp;lt;code&amp;gt;/dev/fd0&amp;lt;/code&amp;gt;.&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;/mnt/floppy&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the directory to which the floppy disk will be mounted. &lt;br /&gt;
&lt;br /&gt;
9. Go to the directory where the floppy is mounted&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /mnt/floppy&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
10. show the content of the floppy&lt;br /&gt;
: &amp;lt;pre&amp;gt;ls -l&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
11. copy the content of the floppy to the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; directory created previously.&lt;br /&gt;
: &amp;lt;pre&amp;gt;cp -r -p * /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the recursive mode, so subdirectories will be copied as well&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;-p&#039;&#039;&#039;&amp;lt;/code&amp;gt; is for the preserve mode, which means that the timestamps, ownership status and access rights flags of the files will be preserved&lt;br /&gt;
::* &amp;lt;code&amp;gt;&#039;&#039;&#039;*&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that all the files will be copied  &lt;br /&gt;
&lt;br /&gt;
12. go to the home directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;cd /home/dsl/&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
13. create a zip file of the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;zip -r data01.zip /home/dsl/data&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
14. If further floppies need to be read, then remove all the files in the data directory&lt;br /&gt;
: &amp;lt;pre&amp;gt;rm -fr /home/dsl/data/*&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
15. unmount the floppy drive.&lt;br /&gt;
: &amp;lt;pre&amp;gt;sudo umount /dev/fd1&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In order to process further floppies, repeat the steps 8 to 15 and rename the zip file in step 13 accordingly.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=562</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=562"/>
		<updated>2012-12-04T11:04:57Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: more details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
* Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
[[File:Comparison_Connector.jpg|thumb|right|500px]]&lt;br /&gt;
* &amp;lt;p&amp;gt;Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
&lt;br /&gt;
: The image shows the ends of two different floppy drive connectors. These ends are used to connect the cable to the motherboard. One of the connectors has a plastic knob on the long side, whereas the other one has none. This means that the connector on the right could be plugged in wrongly. If the connector doesn&#039;t have a plastic knob, but the socket has a notch for connectors that do have one, then the connector has to be plugged in with the two dents (which are present at both models) facing the side of the notch. &lt;br /&gt;
&lt;br /&gt;
: &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&#039;&#039;&#039;Warning:&#039;&#039;&#039;: Connecting the cable in the wrong way can destroy the floppy disk and make it unreadable and unusable.&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
* Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
* Setting the drive in the BIOS of the computer. This step greatly depends on the manufacturer and the model of the computer. The BIOS can usually be entered by either pressing &amp;quot;Del&amp;quot;, &amp;quot;Esc&amp;quot;, or one of the function keys (F1-F12). The new floppy drive has to be selected as one of the floppy drives of this computer. It is important to note whether it is selected as the primary or secondary floppy drive, as this might has an influence on the later steps. For this tutorial the 5.25&#039;&#039; floppy drive was selected as the secondary floppy drive, since the already present 3.5&#039;&#039; floppy drive remains selected as the primary floppy drive. &lt;br /&gt;
&lt;br /&gt;
* The following steps for reading the data from the floppy drive where done using a Linux distribution called [http://www.damnsmalllinux.org/ Damn Small Linux (DSL)]. It is a small Linux system which can be run from a CD without installing any additional software. The following steps can however also be done using any other Linux system, regardless of whether it is run from a Live-CD or installed).&lt;br /&gt;
&lt;br /&gt;
* Once Linux has booted, the user should open the Linux shell and create a directory &amp;quot;data&amp;quot; within the current home directory. The shell shortcut for the current home directory is &amp;lt;code&amp;gt;~&amp;lt;/code&amp;gt; and on DSL the home directory is &amp;lt;code&amp;gt;/home/dsl/&amp;lt;/code&amp;gt;. The command to create that directory would therefore be: &lt;br /&gt;
&lt;br /&gt;
 mkdir /home/dsl/data&lt;br /&gt;
&lt;br /&gt;
* If it doesn&#039;t already exist, one should also create a directory in which the floppy drive can be mounted. On DSL the directory /mnt/floppy already exists, but any other empty directory will work as well, e.g. &amp;lt;code&amp;gt;/home/dsl/floppy&amp;lt;/code&amp;gt;. So if one wants to use a different directory or the default directory doesn&#039;t exist, one can create a new directory analog to previous command.&lt;br /&gt;
&lt;br /&gt;
* Next the step would be to mount the floppy drive. &lt;br /&gt;
 sudo mount -r -t msdos /dev/fd1 /mnt/floppy&lt;br /&gt;
&lt;br /&gt;
** &amp;lt;code&amp;gt;&#039;&#039;&#039;sudo&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the command will be executed as the superuser.&lt;br /&gt;
** &amp;lt;code&amp;gt;&#039;&#039;&#039;mount&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the actual mount command.&lt;br /&gt;
** &amp;lt;code&amp;gt;&#039;&#039;&#039;-r&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the drive is read-only.&lt;br /&gt;
** &amp;lt;code&amp;gt;&#039;&#039;&#039;-f msdos&#039;&#039;&#039;&amp;lt;/code&amp;gt; means that the floppy drive is DOS formatted. The alternative would be &amp;lt;code&amp;gt;-f msdos&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&#039;&#039;&#039;/dev/fd1&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the floppy device, if the floppy drive is selected as the secondary floppy drive. If the floppy drive is selected as the primary floppy drive, one has to use &amp;lt;code&amp;gt;/dev/fd0&amp;lt;/code&amp;gt;.&lt;br /&gt;
** &amp;lt;code&amp;gt;&#039;&#039;&#039;/mnt/floppy&#039;&#039;&#039;&amp;lt;/code&amp;gt; is the directory to which the floppy disk will be mounted. &lt;br /&gt;
&lt;br /&gt;
 cd /mnt/floppy&lt;br /&gt;
 ls -l&lt;br /&gt;
 cp -r -p * /home/dsl/data&lt;br /&gt;
 cd /home/dsl/&lt;br /&gt;
 zip -r data01.zip /home/dsl/data&lt;br /&gt;
 rm -fr /home/dsl/data/*&lt;br /&gt;
 sudo umount /dev/fd1&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=561</id>
		<title>Reading 5.25&quot; Floppy Disks</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Reading_5.25%22_Floppy_Disks&amp;diff=561"/>
		<updated>2012-11-27T16:50:26Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: Created page with &amp;quot;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI)....&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article presumes that the reader has a working 5.25&amp;quot; floppy drive, a connector cable and a computer that has a corresponding connector on the motherboard (34 pin ATA/ATAPI). &lt;br /&gt;
&lt;br /&gt;
* Open the computer and position the drive in an empty slot in the drive rack. You might need to remove a small metal sheet and the corresponding plastic cover from the case. &lt;br /&gt;
* Connect the drive to the main board using the connector cable. The cable itself can only be connected in one way to the drive because of the plastic division bar in the connector. However, it might be possible to connect the cable in the wrong position to the motherboard. &lt;br /&gt;
* Connect the electricity cable to the drive.&lt;br /&gt;
&lt;br /&gt;
TODO:Warnig with photo&lt;br /&gt;
TODO: twist in connector cable&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
* wiring of floppy drive&lt;br /&gt;
* set drive in BIOS&lt;br /&gt;
* boot Linux&lt;br /&gt;
 mkdir /home/dsl/data&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sudo mount -r -t msdos /dev/fd1 /mnt/floppy&lt;br /&gt;
 cd /mnt/floppy&lt;br /&gt;
 ls -l&lt;br /&gt;
 cp -r -p * /home/dsl/data&lt;br /&gt;
 cd /home/dsl/&lt;br /&gt;
 zip -r data01.zip /home/dsl/data&lt;br /&gt;
 rm -fr /home/dsl/data/*&lt;br /&gt;
 sudo umount /dev/fd1&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_dBase_Data&amp;diff=559</id>
		<title>Export dBase Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_dBase_Data&amp;diff=559"/>
		<updated>2012-11-09T17:04:24Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: initial version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data out of a dBase Table File (*.dbf). For details about the file format see [http://www.nationalarchives.gov.uk/pronom/x-fmt/9] and [http://www.digitalpreservation.gov/formats/fdd/fdd000325.shtml].&lt;br /&gt;
&lt;br /&gt;
=== Opening the data with Libre Office ===&lt;br /&gt;
It is possible to import *.dbf files into Libre Office (or Open Office) Calc or Base: http://help.libreoffice.org/Calc/Importing_and_Exporting_dBASE_Files . Libre Office will try to recognize the character encoding of the data and preselect this option in the import window. Once a file imported, it can be saved in/exported to a variety of different formats. &lt;br /&gt;
&lt;br /&gt;
=== Importing the data directly into a mySQL database ===&lt;br /&gt;
Alternatively the data can directly be imported into a running mySQL database using the linux program &amp;lt;code&amp;gt;[http://manpages.ubuntu.com/manpages/lucid/man1/dbf2mysql.1.html dbf2mysql]&amp;lt;/code&amp;gt;. Importing the data directly however could cause some problems with the character encoding for non ASCII characters.&lt;br /&gt;
&lt;br /&gt;
If the mysql server is already running, the following commands will import the data:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
user@linux:~$ mysql -u root -p&lt;br /&gt;
mysql&amp;gt; create database database_name;&lt;br /&gt;
mysql&amp;gt; exit&lt;br /&gt;
user@linux:~$ sudo apt-get install dbf2mysql&lt;br /&gt;
user@linux:~$ dbf2mysql -vvv -c -f -d database_name -U root -P password DATA_FILE.DBF &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The data can then be exported using &amp;lt;code&amp;gt;mysqldump&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
user@linux:~$ mysqldump -u root -p database_name &amp;gt; data_export.sql&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Retrieving_Geocoordinates_From_Points_In_Images&amp;diff=646</id>
		<title>Retrieving Geocoordinates From Points In Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Retrieving_Geocoordinates_From_Points_In_Images&amp;diff=646"/>
		<updated>2012-07-26T13:45:52Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: Useful links added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Retrieving Geocoordinates From Points In Images =&lt;br /&gt;
This manual will show how to get the geocoordinates from points in an image. &lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The source image we use, shows six locations in the western part of Nicaragua. Though the image is of poor quality, luckily the lines for latitude and longitude are visible in the picture. &lt;br /&gt;
[[File:JOSM Mapping 00 Original Image.png|frame|none|The Source Image with six locations marked with circled dots]]&lt;br /&gt;
To start download the program JOSM from [http://josm.openstreetmap.de/ http://josm.openstreetmap.de/]. JOSM is a Java based Editor for [http://www.oepnstreetmap.org OpenStreetMap]. &lt;br /&gt;
[[File:JOSM Mapping 01 Initial Window.png|frame|none|The Initial Screen of JOSM]]&lt;br /&gt;
== Download PicLayer Plugin ==&lt;br /&gt;
* Start JOSM&lt;br /&gt;
* Press F12 to get to the Preferences Window&lt;br /&gt;
* Go to the Plugin-Tab&lt;br /&gt;
* Click on &#039;&#039;&#039;Download List&#039;&#039;&#039;&lt;br /&gt;
* Search for &#039;&#039;&#039;PicLayer&#039;&#039;&#039;&lt;br /&gt;
* Check the checkbox for the PicLayer plugin&lt;br /&gt;
* Click OK and restart JOSM&lt;br /&gt;
[[File:JOSM Mapping 02 Preferences Plugins.png|frame|none|Selecting the PicLayer Plugin]]&lt;br /&gt;
&lt;br /&gt;
== Select the OpenStreetMap Image Layer ==&lt;br /&gt;
* Go on &#039;&#039;&#039;Imagery&#039;&#039;&#039; and select &#039;&#039;&#039;OpenStreetMap (Mapnik)&#039;&#039;&#039;&lt;br /&gt;
* navigate to the area of interest&lt;br /&gt;
[[File:JOSM Mapping 03 Area Of Interest.png|frame|none|The area of interest is selected]]&lt;br /&gt;
&lt;br /&gt;
== Draw a reference rectangle ==&lt;br /&gt;
&#039;&#039;This step can be skipped if the image does not show the lines for latitude and longitude, like the example image above does.&#039;&#039; &lt;br /&gt;
* Open a new Data Layer by pressing &#039;&#039;&#039;Ctrl + N&#039;&#039;&#039;&lt;br /&gt;
* Insert a new Point by pressing &#039;&#039;&#039;Shift + D&#039;&#039;&#039; and entering its coordinates and press OK. In this example we start with 13.0 -87.0. Repeat for the other points as well: 12.0 -87,0; 12.0 -86,0 and 13.0 -86,0.&lt;br /&gt;
&lt;br /&gt;
[[File:JOSM Mapping 04 Entering Coordinates.png|frame|none|The window for entering the coordinates.]]&lt;br /&gt;
* Switch to the drawing tool by pressing &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
* Connect the four points to a rectangle. &lt;br /&gt;
[[File:JOSM Mapping 05 Grid Rectangle.png|frame|none|The rectangle on the map]]&lt;br /&gt;
&lt;br /&gt;
== Loading the reference image ==&lt;br /&gt;
* In the Menu go on &#039;&#039;&#039;PicLayer&#039;&#039;&#039; and select &#039;&#039;&#039;New picture layer from file ...&#039;&#039;&#039;&lt;br /&gt;
* Select the prepared image.&lt;br /&gt;
* The Picture Layer may be displayed below the OpenStreetMap Layer. If so, move it up in the Layers Box, so that the image becomes visible. &lt;br /&gt;
[[File:JOSM Mapping 06 Image Loaded.png|frame|none|The image loaded as a PicLayer]]&lt;br /&gt;
* Also make the Picture Layer the active layer, by clicking on the third button in the Layers Box Toolbar, when the Picture Layer is selected. By doing so, the tools for calibrating the picture will become visible in the toolbar at the left side. &lt;br /&gt;
[[File:JOSM Mapping 07 Image Layer Selected.png|frame|none|The image layer is now the selected layer]]&lt;br /&gt;
&lt;br /&gt;
== Calibrating the reference image == &lt;br /&gt;
* Click on the button with the green arrow to add three reference points on the image, each on one of the confluence points (where the latitude and longitude lines cross). &lt;br /&gt;
* Click on the button with the red arrow to move the reference points until they align with the corners of the rectangle. &lt;br /&gt;
* If you now make the image layer semi-transparent, you can see how the image aligns with the map. &lt;br /&gt;
* If you do not have the latitude and longitude lines, you should make the image layer semi transparent and try to align distinct points in the image with the map. &lt;br /&gt;
&lt;br /&gt;
[[File:JOSM Mapping 08 Image Layer Calibrated.png|frame|none|The image is now calibrated. The gray arrows of the rectangle of the data layer are now over the grid lines in the image.]]&lt;br /&gt;
[[File:JOSM Mapping 09 Image Layer Semi-Transparent.png|frame|none|Setting the image layer as semi transparent.]]&lt;br /&gt;
&lt;br /&gt;
== Mapping the points in the image ==&lt;br /&gt;
* Open a new data layer by pressing &#039;&#039;&#039;Ctrl + N&#039;&#039;&#039;&lt;br /&gt;
* Select the drawing tool by pressing &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
* Draw points on the positions of the image from which you want to know the coordinates.&lt;br /&gt;
* If there are several points, you should add a name for each point in the Properties Box on the right.&lt;br /&gt;
[[File:JOSM Mapping 10 Points Mapped And Named.png|frame|none|Mapping the points. They are visible as the light small rectangles in the black dots on the image.]]&lt;br /&gt;
* After all the points are mapped, right-click on the new data layer and select &#039;&#039;&#039;Save As ...&#039;&#039;&#039; and save it as XML file on your local file system. &lt;br /&gt;
[[File:JOSM Mapping 11 Exporting Points.png|frame|none|Exporting the mapped points.]]&lt;br /&gt;
* The file contains the coordinates of the selected points for further processing. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039;?&amp;gt;&lt;br /&gt;
&amp;lt;osm version=&#039;0.6&#039; upload=&#039;true&#039; generator=&#039;JOSM&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-95&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.881180287556537&#039; lon=&#039;-86.11194760698338&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;1&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-94&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.79249813630681&#039; lon=&#039;-86.10761639569195&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;2&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-93&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.403621057420668&#039; lon=&#039;-86.22455910056097&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;3&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-92&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.084582576302516&#039; lon=&#039;-86.11790302250911&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;6&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-91&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.20261349095152&#039; lon=&#039;-86.46277572159048&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;5&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-90&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.40062989709886&#039; lon=&#039;-86.83219726377988&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;4&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
&amp;lt;/osm&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Closing JOSM ==&lt;br /&gt;
* Close JOSM. &#039;&#039;&#039;WARNING&#039;&#039;&#039;: When you try to close JOSM, it will ask you if you want to upload the two data layers to OpenStreetMap and selects these options for you. &#039;&#039;&#039;DO NOT UPLOAD THE DATA!&#039;&#039;&#039; Click on &#039;&#039;&#039;Exit Now.&#039;&#039;&#039;&lt;br /&gt;
* JOSM will then ask if the calibration file for the image should be saved. You can do so, if you want to. It will be stored in the same directory as the image. The next time you select the image to be used by PicLayer it will detect this file and put the image in the correct position.&lt;br /&gt;
&lt;br /&gt;
== Useful Links ==&lt;br /&gt;
* [http://boulter.com/gps/ GPS Coordinate Converter] Converts coordinates from the various form to various other forms, shows them on the map and links to different maps.&lt;br /&gt;
* [http://www.movable-type.co.uk/scripts/latlong-vincenty.html Inverse Vincenty Formula] Calculate the distance between two coordinates&lt;br /&gt;
* [http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html Direct Vincenty Formula] Enter GPS coordinates, a direction and a distance and get the resulting coordinates&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=641</id>
		<title>Correction Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=641"/>
		<updated>2012-07-26T12:22:12Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: more modules added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Modules for the XML Correction Manager =&lt;br /&gt;
When the user starts the correction of an XML file, a specific correction configuration has to be selected. The web interface of the Correction Manager will offer a list of all correction config files in the correction config directory. A correction config file, is an XML file which is valid to a specific schema. It specifies what correction modules will be called, in what order and with what parameters. The structure of such a file is relatively simple: &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;modules xmlns=&amp;quot;http://rebind.bgbm.org/modules&amp;quot; name=&amp;quot;configuration-name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;module-name&amp;quot; description=&amp;quot;module-description&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;module-setting-name&amp;quot; value=&amp;quot;module-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;setting name=&amp;quot;general-setting-name&amp;quot; value=&amp;quot;general-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The root element is &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is optional. It is the name with which the module will be displayed in the web interface of the Correction Manager. &lt;br /&gt;
&lt;br /&gt;
There can be several &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; elements within the element &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element must have a &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute which specifies the name of the module to be loaded. This should either be the complete name of a Java class which implements the &amp;lt;code&amp;gt;Module&amp;lt;/code&amp;gt; interface or the name specified within the method &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt; of that class. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is optional and is used to distinguish different instances of the same module which are run with different settings. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element can have any number of &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. Each &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; element has mandatory attributes for the setting &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. What settings are used for each module is specified in the module descriptions below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; element can also have &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. These general settings are also accessible by the module and are overwritten if a setting with the same name is specified in the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element. &lt;br /&gt;
__TOC__&lt;br /&gt;
== ElementTextReplacer ==&lt;br /&gt;
&#039;&#039;What it does&#039;&#039;: Replaces the text content of specific elements according to specific rules. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name&#039;&#039;: &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings&#039;&#039;: &lt;br /&gt;
: &#039;&#039;&#039;address&#039;&#039;&#039;&lt;br /&gt;
:: The name (including element prefix) of the element whose text should be replaced. Or an XPath expression pointing to the element. If the value is interpreted as a name or as an XPath depends on the attribute &amp;lt;code&amp;gt;isXPath&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;abcd:Sex&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isXPath&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element contains an XPath expression or just the name of an element. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;key&#039;&#039;&#039;&lt;br /&gt;
:: The part of the content that should be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;(H[ea]llo World)(\!?)&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World;Lorem Ipsum&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;H[ea]llo World\!?;[Ll]orem [iI]psum&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
:: The new content with which the content specified in &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; will be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. If the batch mode is used, the key fragments will be replaced by the corresponding value fragments (e.g. the third key fragment will be replaced by third value fragment). Therefore the number of fragments must be the same for key and value, otherwise the replacement will stop after the number of fragments in the smaller one. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World again&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;$1 again $2&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World again;Lorem ipsum dolor sit amet&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;$1 again $2;$&amp;amp; dolor sit amet&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isRegEx&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are regular expressions or just plain text. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isBatch&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements contain just one fragment which is supposed to be replaced, or several. If it is true, the character or string with which the different fragments of &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;.&lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;splitter&#039;&#039;&#039;&lt;br /&gt;
:: The character or string with which the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are broken into their fragments, if they are in batch mode. The splitting is done using the function [http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29 String.split(String)], which interprets the parameter string as a regular expression. This could cause errors when the splitter contains characters with syntactical meaning in RegEx, like &amp;lt;code&amp;gt;&amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;.&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt; which would cause any character to be matched and therefor only returning empty fragments. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;\.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;replaces &#039;Specimen&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^(Specimen)$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;Preserved$1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Sex&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Sex&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;female;male;hermaphrodite&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;F;M;X&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Rank&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;[f.];[subvar.];[var.]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;subvar.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:Rank[matches(.,&#039;^(f|var)$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^f$;^var$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EmptyElementDeleter ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; Removes empty elements which have neither text content (except white spaces) nor child elements nor attributes. Currently there is a hardcoded exception regarding the attributes. If the only attribute is &amp;lt;code&amp;gt;abcd:language&amp;lt;/code&amp;gt; then the element will be deleted as well. Such exceptions will be adjustable via the settings in the future. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.EmptyElementDeleter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Example:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.EmptyElementDeleter&amp;quot; description=&amp;quot;first iteration&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ElementDeleter ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; Deletes specific elements including all its content and child elements. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.ElementDeleter&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;xpath&#039;&#039;&#039;&lt;br /&gt;
:: The XPath address of the element(s) to be removed. Also works for attributes. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;//abcd:LogoURI&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;//abcd:TelephoneNumber[abcd:Device=&amp;quot;Fax&amp;quot;]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementDeleter&amp;quot; description=&amp;quot;delete abcd:language attributes&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;xpath&amp;quot; value=&amp;quot;//*/@abcd:language&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ElementRenamer ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.ElementRenamer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;xpath&#039;&#039;&#039;&lt;br /&gt;
:: The XPath address of the element(s) to be renamed. Also works for attributes. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;//abcd:LogoURI&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;//abcd:TelephoneNumber[abcd:Device=&amp;quot;Fax&amp;quot;]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;newName&#039;&#039;&#039;&lt;br /&gt;
:: The new name of the element, without namepsace prefix.&lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;newElementName&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;useOldNamespace&#039;&#039;&#039;&lt;br /&gt;
::  A flag indicating if the old namespace (and namespace prefix) of the element should be used after renaming as well. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; no&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values:&#039;&#039; &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;newNamespace&#039;&#039;&#039;&lt;br /&gt;
:: The namespace url of the new namespace, if &amp;lt;code&amp;gt;useOldNamespace&amp;lt;/code&amp;gt; is set to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; no&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &#039;&#039;(empty string)&#039;&#039;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;http://example.com/ns/xyz&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;newNamespacePrefix&#039;&#039;&#039;&lt;br /&gt;
:: The namespace prefix of the new namespace, if &amp;lt;code&amp;gt;useOldNamespace&amp;lt;/code&amp;gt; is set to &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. If the colon at the end is missing, it will be added automatically.&lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; no&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &#039;&#039;(empty string)&#039;&#039;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;xyz:&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementRenamer&amp;quot; description=&amp;quot;rename abcd:language attributes&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;xpath&amp;quot; value=&amp;quot;//*/@abcd:language&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;newName&amp;quot; value=&amp;quot;language&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;useOldNamespace&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;newNamespace&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;newNamespacePrefix&amp;quot; value=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementRenamer&amp;quot; description=&amp;quot;rename wrong ISO Dates&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;xpath&amp;quot; value=&amp;quot;//abcd:ISODateTimeBegin[not(matches(.,&#039;^(\d\d\d\d(\-(0[1-9]|1[012])(\-((0[1-9])|1\d|2\d|3[01])(T(0\d|1\d|2[0-3])(:[0-5]\d){0,2})?)?)?|\-\-(0[1-9]|1[012])(\-(0[1-9]|1\d|2\d|3[01]))?|\-\-\-(0[1-9]|1\d|2\d|3[01]))$&#039;))]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;newName&amp;quot; value=&amp;quot;DateText&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;useOldNamespace&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DummyModule ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; Waits 1-11 seconds before returning a quote from either the homicidal computer HAL 9000 from the movie &amp;quot;2001: A Space Odyssey&amp;quot; or the maniacally depressed robot Marvin from the book/movie &amp;quot;The Hitchhiker&#039;s Guide to the Galaxy&amp;quot;. This module does not alter the XML code in any way, it only sends the quote back to the Correction Manager. It is only used for testing purposes. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.DummyModule&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.DummyModule&amp;quot; description=&amp;quot;just wait a bit for a snappy robot remark&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.DummyModule&amp;quot; description=&amp;quot;Play it once again, Marvin, for old times&#039; sake.&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Work in Progress ==&lt;br /&gt;
These modules are currently in the making. So some of these descriptions might not reflect the current state of development.&lt;br /&gt;
&lt;br /&gt;
=== ABCDDateCorrector ===&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; Checks the dates in the elements &amp;lt;code&amp;gt;abcd:ISODateTimeBegin&amp;lt;/code&amp;gt; within &amp;lt;code&amp;gt;abcd:Date&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;abcd:DateTime&amp;lt;/code&amp;gt;. If they are not formatted according to the ISO norm it tries to parse and fix them or renames the element to &amp;lt;code&amp;gt;abcd:DateText&amp;lt;/code&amp;gt;. However if there are any &amp;lt;code&amp;gt;abcd:DateText&amp;lt;/code&amp;gt; elements which are correctly formatted or can be converted, it will make them into &amp;lt;code&amp;gt;abcd:ISODateTimeBegin&amp;lt;/code&amp;gt; elements. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.ABCDDateCorrector&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ABCDDateCorrector&amp;quot; description=&amp;quot;fixing the dates&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SimpleCountryCodeChecker ===&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; Compares the content of the &amp;lt;code&amp;gt;abcd:ISO3166Code&amp;lt;/code&amp;gt; element with a list of Country Codes provided by Java and warns if it doesn&#039;t occur there. Also has some hardcoded exceptions for the commonly used but unspecified codes: &lt;br /&gt;
 ZZ	Unknown&lt;br /&gt;
 XA	Unknown or unspecified Africa&lt;br /&gt;
 XB	Unknown or unspecified Middle and South America&lt;br /&gt;
 XC	Unknown or unspecified Asia&lt;br /&gt;
 XD	Unknown or unspecified Australia and Oceania&lt;br /&gt;
 XE	Unknown or unspecified Europe&lt;br /&gt;
 XF	Unknown or unspecified North America&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.SimpleCountryCodeChecker&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; none&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.SimpleCountryCodeChecker&amp;quot; description=&amp;quot;checking the country codes&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=640</id>
		<title>Correction Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=640"/>
		<updated>2012-07-26T10:14:14Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: TOC moved&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Modules for the XML Correction Manager =&lt;br /&gt;
When the user starts the correction of an XML file, a specific correction configuration has to be selected. The web interface of the Correction Manager will offer a list of all correction config files in the correction config directory. A correction config file, is an XML file which is valid to a specific schema. It specifies what correction modules will be called, in what order and with what parameters. The structure of such a file is relatively simple: &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;modules xmlns=&amp;quot;http://rebind.bgbm.org/modules&amp;quot; name=&amp;quot;configuration-name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;module-name&amp;quot; description=&amp;quot;module-description&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;module-setting-name&amp;quot; value=&amp;quot;module-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;setting name=&amp;quot;general-setting-name&amp;quot; value=&amp;quot;general-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The root element is &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is optional. It is the name with which the module will be displayed in the web interface of the Correction Manager. &lt;br /&gt;
&lt;br /&gt;
There can be several &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; elements within the element &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element must have a &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute which specifies the name of the module to be loaded. This should either be the complete name of a Java class which implements the &amp;lt;code&amp;gt;Module&amp;lt;/code&amp;gt; interface or the name specified within the method &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt; of that class. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is optional and is used to distinguish different instances of the same module which are run with different settings. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element can have any number of &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. Each &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; element has mandatory attributes for the setting &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. What settings are used for each module is specified in the module descriptions below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; element can also have &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. These general settings are also accessible by the module and are overwritten if a setting with the same name is specified in the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element. &lt;br /&gt;
__TOC__&lt;br /&gt;
== ElementTextReplacer ==&lt;br /&gt;
&#039;&#039;What it does&#039;&#039;: Replaces the text content of specific elements according to specific rules. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name&#039;&#039;: &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings&#039;&#039;: &lt;br /&gt;
: &#039;&#039;&#039;address&#039;&#039;&#039;&lt;br /&gt;
:: The name (including element prefix) of the element whose text should be replaced. Or an XPath expression pointing to the element. If the value is interpreted as a name or as an XPath depends on the attribute &amp;lt;code&amp;gt;isXPath&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;abcd:Sex&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isXPath&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element contains an XPath expression or just the name of an element. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;key&#039;&#039;&#039;&lt;br /&gt;
:: The part of the content that should be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;(H[ea]llo World)(\!?)&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World;Lorem Ipsum&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;H[ea]llo World\!?;[Ll]orem [iI]psum&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
:: The new content with which the content specified in &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; will be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. If the batch mode is used, the key fragments will be replaced by the corresponding value fragments (e.g. the third key fragment will be replaced by third value fragment). Therefore the number of fragments must be the same for key and value, otherwise the replacement will stop after the number of fragments in the smaller one. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World again&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;$1 again $2&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World again;Lorem ipsum dolor sit amet&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;$1 again $2;$&amp;amp; dolor sit amet&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isRegEx&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are regular expressions or just plain text. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isBatch&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements contain just one fragment which is supposed to be replaced, or several. If it is true, the character or string with which the different fragments of &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;.&lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;splitter&#039;&#039;&#039;&lt;br /&gt;
:: The character or string with which the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are broken into their fragments, if they are in batch mode. The splitting is done using the function [http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29 String.split(String)], which interprets the parameter string as a regular expression. This could cause errors when the splitter contains characters with syntactical meaning in RegEx, like &amp;lt;code&amp;gt;&amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;.&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt; which would cause any character to be matched and therefor only returning empty fragments. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;\.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;replaces &#039;Specimen&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^(Specimen)$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;Preserved$1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Sex&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Sex&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;female;male;hermaphrodite&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;F;M;X&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Rank&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;[f.];[subvar.];[var.]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;subvar.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:Rank[matches(.,&#039;^(f|var)$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^f$;^var$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EmptyElementDeleter ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ElementDeleter ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ElementRenamer ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DummyModule ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=639</id>
		<title>Correction Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=639"/>
		<updated>2012-07-26T10:13:34Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: Empty templates for other modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Modules for the XML Correction Manager =&lt;br /&gt;
When the user starts the correction of an XML file, a specific correction configuration has to be selected. The web interface of the Correction Manager will offer a list of all correction config files in the correction config directory. A correction config file, is an XML file which is valid to a specific schema. It specifies what correction modules will be called, in what order and with what parameters. The structure of such a file is relatively simple: &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;modules xmlns=&amp;quot;http://rebind.bgbm.org/modules&amp;quot; name=&amp;quot;configuration-name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;module-name&amp;quot; description=&amp;quot;module-description&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;module-setting-name&amp;quot; value=&amp;quot;module-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;setting name=&amp;quot;general-setting-name&amp;quot; value=&amp;quot;general-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The root element is &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is optional. It is the name with which the module will be displayed in the web interface of the Correction Manager. &lt;br /&gt;
&lt;br /&gt;
There can be several &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; elements within the element &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element must have a &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute which specifies the name of the module to be loaded. This should either be the complete name of a Java class which implements the &amp;lt;code&amp;gt;Module&amp;lt;/code&amp;gt; interface or the name specified within the method &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt; of that class. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is optional and is used to distinguish different instances of the same module which are run with different settings. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element can have any number of &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. Each &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; element has mandatory attributes for the setting &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. What settings are used for each module is specified in the module descriptions below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; element can also have &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. These general settings are also accessible by the module and are overwritten if a setting with the same name is specified in the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element. &lt;br /&gt;
&lt;br /&gt;
== ElementTextReplacer ==&lt;br /&gt;
&#039;&#039;What it does&#039;&#039;: Replaces the text content of specific elements according to specific rules. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name&#039;&#039;: &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings&#039;&#039;: &lt;br /&gt;
: &#039;&#039;&#039;address&#039;&#039;&#039;&lt;br /&gt;
:: The name (including element prefix) of the element whose text should be replaced. Or an XPath expression pointing to the element. If the value is interpreted as a name or as an XPath depends on the attribute &amp;lt;code&amp;gt;isXPath&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;abcd:Sex&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isXPath&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element contains an XPath expression or just the name of an element. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;key&#039;&#039;&#039;&lt;br /&gt;
:: The part of the content that should be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;(H[ea]llo World)(\!?)&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World;Lorem Ipsum&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;H[ea]llo World\!?;[Ll]orem [iI]psum&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
:: The new content with which the content specified in &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; will be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. If the batch mode is used, the key fragments will be replaced by the corresponding value fragments (e.g. the third key fragment will be replaced by third value fragment). Therefore the number of fragments must be the same for key and value, otherwise the replacement will stop after the number of fragments in the smaller one. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World again&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;$1 again $2&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World again;Lorem ipsum dolor sit amet&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;$1 again $2;$&amp;amp; dolor sit amet&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isRegEx&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are regular expressions or just plain text. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isBatch&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements contain just one fragment which is supposed to be replaced, or several. If it is true, the character or string with which the different fragments of &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;.&lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;splitter&#039;&#039;&#039;&lt;br /&gt;
:: The character or string with which the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are broken into their fragments, if they are in batch mode. The splitting is done using the function [http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29 String.split(String)], which interprets the parameter string as a regular expression. This could cause errors when the splitter contains characters with syntactical meaning in RegEx, like &amp;lt;code&amp;gt;&amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;.&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt; which would cause any character to be matched and therefor only returning empty fragments. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;\.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;replaces &#039;Specimen&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^(Specimen)$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;Preserved$1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Sex&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Sex&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;female;male;hermaphrodite&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;F;M;X&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Rank&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;[f.];[subvar.];[var.]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;subvar.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:Rank[matches(.,&#039;^(f|var)$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^f$;^var$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== EmptyElementDeleter ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ElementDeleter ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ElementRenamer ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DummyModule ==&lt;br /&gt;
&#039;&#039;What it does:&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings:&#039;&#039; &lt;br /&gt;
: &#039;&#039;&#039;name&#039;&#039;&#039;&lt;br /&gt;
:: &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory:&#039;&#039; yes&lt;br /&gt;
:: &#039;&#039;Default Value:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values:&#039;&#039; &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples:&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=638</id>
		<title>Correction Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=638"/>
		<updated>2012-07-26T10:08:40Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: /* ElementTextReplacer */ formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Modules for the XML Correction Manager =&lt;br /&gt;
When the user starts the correction of an XML file, a specific correction configuration has to be selected. The web interface of the Correction Manager will offer a list of all correction config files in the correction config directory. A correction config file, is an XML file which is valid to a specific schema. It specifies what correction modules will be called, in what order and with what parameters. The structure of such a file is relatively simple: &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;modules xmlns=&amp;quot;http://rebind.bgbm.org/modules&amp;quot; name=&amp;quot;configuration-name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;module-name&amp;quot; description=&amp;quot;module-description&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;module-setting-name&amp;quot; value=&amp;quot;module-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;setting name=&amp;quot;general-setting-name&amp;quot; value=&amp;quot;general-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The root element is &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is optional. It is the name with which the module will be displayed in the web interface of the Correction Manager. &lt;br /&gt;
&lt;br /&gt;
There can be several &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; elements within the element &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element must have a &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute which specifies the name of the module to be loaded. This should either be the complete name of a Java class which implements the &amp;lt;code&amp;gt;Module&amp;lt;/code&amp;gt; interface or the name specified within the method &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt; of that class. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is optional and is used to distinguish different instances of the same module which are run with different settings. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element can have any number of &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. Each &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; element has mandatory attributes for the setting &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. What settings are used for each module is specified in the module descriptions below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; element can also have &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. These general settings are also accessible by the module and are overwritten if a setting with the same name is specified in the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element. &lt;br /&gt;
&lt;br /&gt;
== ElementTextReplacer ==&lt;br /&gt;
&#039;&#039;What it does&#039;&#039;: Replaces the text content of specific elements according to specific rules. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Full Name&#039;&#039;: &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Settings&#039;&#039;: &lt;br /&gt;
: &#039;&#039;&#039;address&#039;&#039;&#039;&lt;br /&gt;
:: The name (including element prefix) of the element whose text should be replaced. Or an XPath expression pointing to the element. If the value is interpreted as a name or as an XPath depends on the attribute &amp;lt;code&amp;gt;isXPath&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;abcd:Sex&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isXPath&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element contains an XPath expression or just the name of an element. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;key&#039;&#039;&#039;&lt;br /&gt;
:: The part of the content that should be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;(H[ea]llo World)(\!?)&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World;Lorem Ipsum&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;H[ea]llo World\!?;[Ll]orem [iI]psum&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
:: The new content with which the content specified in &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; will be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. If the batch mode is used, the key fragments will be replaced by the corresponding value fragments (e.g. the third key fragment will be replaced by third value fragment). Therefore the number of fragments must be the same for key and value, otherwise the replacement will stop after the number of fragments in the smaller one. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World again&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;$1 again $2&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World again;Lorem ipsum dolor sit amet&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;$1 again $2;$&amp;amp; dolor sit amet&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isRegEx&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are regular expressions or just plain text. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isBatch&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements contain just one fragment which is supposed to be replaced, or several. If it is true, the character or string with which the different fragments of &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;.&lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;splitter&#039;&#039;&#039;&lt;br /&gt;
:: The character or string with which the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are broken into their fragments, if they are in batch mode. The splitting is done using the function [http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29 String.split(String)], which interprets the parameter string as a regular expression. This could cause errors when the splitter contains characters with syntactical meaning in RegEx, like &amp;lt;code&amp;gt;&amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;.&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt; which would cause any character to be matched and therefor only returning empty fragments. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;\.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;replaces &#039;Specimen&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^(Specimen)$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;Preserved$1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Sex&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Sex&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;female;male;hermaphrodite&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;F;M;X&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Rank&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;[f.];[subvar.];[var.]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;subvar.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:Rank[matches(.,&#039;^(f|var)$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^f$;^var$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=637</id>
		<title>Correction Modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Correction_Modules&amp;diff=637"/>
		<updated>2012-07-26T10:06:58Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: Introduction and ElementTextReplacer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Modules for the XML Correction Manager =&lt;br /&gt;
When the user starts the correction of an XML file, a specific correction configuration has to be selected. The web interface of the Correction Manager will offer a list of all correction config files in the correction config directory. A correction config file, is an XML file which is valid to a specific schema. It specifies what correction modules will be called, in what order and with what parameters. The structure of such a file is relatively simple: &lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;modules xmlns=&amp;quot;http://rebind.bgbm.org/modules&amp;quot; name=&amp;quot;configuration-name&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;module-name&amp;quot; description=&amp;quot;module-description&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;module-setting-name&amp;quot; value=&amp;quot;module-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;setting name=&amp;quot;general-setting-name&amp;quot; value=&amp;quot;general-setting-value&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/modules&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The root element is &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. The &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute is optional. It is the name with which the module will be displayed in the web interface of the Correction Manager. &lt;br /&gt;
&lt;br /&gt;
There can be several &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; elements within the element &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element must have a &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; attribute which specifies the name of the module to be loaded. This should either be the complete name of a Java class which implements the &amp;lt;code&amp;gt;Module&amp;lt;/code&amp;gt; interface or the name specified within the method &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt; of that class. &lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;description&amp;lt;/code&amp;gt; is optional and is used to distinguish different instances of the same module which are run with different settings. &lt;br /&gt;
&lt;br /&gt;
Each &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element can have any number of &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. Each &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; element has mandatory attributes for the setting &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt;. What settings are used for each module is specified in the module descriptions below.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;modules&amp;lt;/code&amp;gt; element can also have &amp;lt;code&amp;gt;setting&amp;lt;/code&amp;gt; elements. These general settings are also accessible by the module and are overwritten if a setting with the same name is specified in the &amp;lt;code&amp;gt;module&amp;lt;/code&amp;gt; element. &lt;br /&gt;
&lt;br /&gt;
== ElementTextReplacer ==&lt;br /&gt;
&#039;&#039;What it does&#039;&#039;: Replaces the text content of specific elements according to specific rules. &lt;br /&gt;
&#039;&#039;Full Name&#039;&#039;: &amp;lt;code&amp;gt;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;lt;/code&amp;gt;&lt;br /&gt;
&#039;&#039;Settings&#039;&#039;: &lt;br /&gt;
: &#039;&#039;&#039;address&#039;&#039;&#039;&lt;br /&gt;
:: The name (including element prefix) of the element whose text should be replaced. Or an XPath expression pointing to the element. If the value is interpreted as a name or as an XPath depends on the attribute &amp;lt;code&amp;gt;isXPath&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;abcd:Sex&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isXPath&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;address&amp;lt;/code&amp;gt; element contains an XPath expression or just the name of an element. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;key&#039;&#039;&#039;&lt;br /&gt;
:: The part of the content that should be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;(H[ea]llo World)(\!?)&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World;Lorem Ipsum&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;H[ea]llo World\!?;[Ll]orem [iI]psum&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;value&#039;&#039;&#039;&lt;br /&gt;
:: The new content with which the content specified in &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; will be replaced. This could either be plain text or a RegEx, depending on the attribute &amp;lt;code&amp;gt;isRegEx&amp;lt;/code&amp;gt;. Regardless whether it is plain text or an attribute, it could several keys to be replaced or just one, depending on the attribute &amp;lt;code&amp;gt;isBatch&amp;lt;/code&amp;gt;. If the batch mode is used, the character or string with which the different parts are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;. If the batch mode is used, the key fragments will be replaced by the corresponding value fragments (e.g. the third key fragment will be replaced by third value fragment). Therefore the number of fragments must be the same for key and value, otherwise the replacement will stop after the number of fragments in the smaller one. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: yes&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;Hello World again&amp;lt;/code&amp;gt; (plain text), &amp;lt;code&amp;gt;$1 again $2&amp;lt;/code&amp;gt; (RegEx), &amp;lt;code&amp;gt;Hello World again;Lorem ipsum dolor sit amet&amp;lt;/code&amp;gt; (plain text, Batch mode with &#039;;&#039; as splitter), &amp;lt;code&amp;gt;$1 again $2;$&amp;amp; dolor sit amet&amp;lt;/code&amp;gt; (RegEx, Batch mode with &#039;;&#039; as splitter),&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isRegEx&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are regular expressions or just plain text. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;isBatch&#039;&#039;&#039;&lt;br /&gt;
:: A flag indicating if the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements contain just one fragment which is supposed to be replaced, or several. If it is true, the character or string with which the different fragments of &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are separated can be specified in the attribute &amp;lt;code&amp;gt;splitter&amp;lt;/code&amp;gt;.&lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Allowed Values&#039;&#039;: &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;splitter&#039;&#039;&#039;&lt;br /&gt;
:: The character or string with which the &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; elements are broken into their fragments, if they are in batch mode. The splitting is done using the function [http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split%28java.lang.String%29 String.split(String)], which interprets the parameter string as a regular expression. This could cause errors when the splitter contains characters with syntactical meaning in RegEx, like &amp;lt;code&amp;gt;&amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;.&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt; which would cause any character to be matched and therefor only returning empty fragments. &lt;br /&gt;
:: &#039;&#039;Mandatory&#039;&#039;: no&lt;br /&gt;
:: &#039;&#039;Default Value&#039;&#039;: &amp;lt;code&amp;gt;;&amp;lt;/code&amp;gt;&lt;br /&gt;
:: &#039;&#039;Example Values&#039;&#039;: &amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;\.&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Examples&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;replaces &#039;Specimen&#039;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:RecordBasis[matches(.,&#039;^Specimen$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^(Specimen)$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;Preserved$1&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Sex&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Sex&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;female;male;hermaphrodite&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;F;M;X&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;abcd:Rank&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;[f.];[subvar.];[var.]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;subvar.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
    &amp;lt;module name=&amp;quot;org.bgbm.rebind.correction.modules.ElementTextReplacer&amp;quot; description=&amp;quot;corrects abcd:Rank&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;address&amp;quot; value=&amp;quot;//abcd:Rank[matches(.,&#039;^(f|var)$&#039;)]&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isXPath&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;key&amp;quot; value=&amp;quot;^f$;^var$&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;value&amp;quot; value=&amp;quot;f.;var.&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isRegEx&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;isBatch&amp;quot; value=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;setting name=&amp;quot;splitter&amp;quot; value=&amp;quot;;&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/module&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Retrieving_Geocoordinates_From_Points_In_Images&amp;diff=645</id>
		<title>Retrieving Geocoordinates From Points In Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Retrieving_Geocoordinates_From_Points_In_Images&amp;diff=645"/>
		<updated>2012-07-25T08:04:42Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: two images added, others renamed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This manual will show how to get the geocoordinates from points in an image. &lt;br /&gt;
&lt;br /&gt;
The source image we use, shows six locations in the western part of Nicaragua. Though the image is of poor quality, luckily the lines for latitude and longitude are visible in the picture. &lt;br /&gt;
[[File:JOSM Mapping 00 Original Image.png|frame|none|The Source Image with six locations marked with circled dots]]&lt;br /&gt;
To start download the program JOSM from [http://josm.openstreetmap.de/ http://josm.openstreetmap.de/]. JOSM is a Java based Editor for [http://www.oepnstreetmap.org OpenStreetMap]. &lt;br /&gt;
[[File:JOSM Mapping 01 Initial Window.png|frame|none|The Initial Screen of JOSM]]&lt;br /&gt;
== Download PicLayer Plugin ==&lt;br /&gt;
* Start JOSM&lt;br /&gt;
* Press F12 to get to the Preferences Window&lt;br /&gt;
* Go to the Plugin-Tab&lt;br /&gt;
* Click on &#039;&#039;&#039;Download List&#039;&#039;&#039;&lt;br /&gt;
* Search for &#039;&#039;&#039;PicLayer&#039;&#039;&#039;&lt;br /&gt;
* Check the checkbox for the PicLayer plugin&lt;br /&gt;
* Click OK and restart JOSM&lt;br /&gt;
[[File:JOSM Mapping 02 Preferences Plugins.png|frame|none|Selecting the PicLayer Plugin]]&lt;br /&gt;
&lt;br /&gt;
== Select the OpenStreetMap Image Layer ==&lt;br /&gt;
* Go on &#039;&#039;&#039;Imagery&#039;&#039;&#039; and select &#039;&#039;&#039;OpenStreetMap (Mapnik)&#039;&#039;&#039;&lt;br /&gt;
* navigate to the area of interest&lt;br /&gt;
[[File:JOSM Mapping 03 Area Of Interest.png|frame|none|The area of interest is selected]]&lt;br /&gt;
&lt;br /&gt;
== Draw a reference rectangle ==&lt;br /&gt;
&#039;&#039;This step can be skipped if the image does not show the lines for latitude and longitude, like the example image above does.&#039;&#039; &lt;br /&gt;
* Open a new Data Layer by pressing &#039;&#039;&#039;Ctrl + N&#039;&#039;&#039;&lt;br /&gt;
* Insert a new Point by pressing &#039;&#039;&#039;Shift + D&#039;&#039;&#039; and entering its coordinates and press OK. In this example we start with 13.0 -87.0. Repeat for the other points as well: 12.0 -87,0; 12.0 -86,0 and 13.0 -86,0.&lt;br /&gt;
&lt;br /&gt;
[[File:JOSM Mapping 04 Entering Coordinates.png|frame|none|The window for entering the coordinates.]]&lt;br /&gt;
* Switch to the drawing tool by pressing &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
* Connect the four points to a rectangle. &lt;br /&gt;
[[File:JOSM Mapping 05 Grid Rectangle.png|frame|none|The rectangle on the map]]&lt;br /&gt;
&lt;br /&gt;
== Loading the reference image ==&lt;br /&gt;
* In the Menu go on &#039;&#039;&#039;PicLayer&#039;&#039;&#039; and select &#039;&#039;&#039;New picture layer from file ...&#039;&#039;&#039;&lt;br /&gt;
* Select the prepared image.&lt;br /&gt;
* The Picture Layer may be displayed below the OpenStreetMap Layer. If so, move it up in the Layers Box, so that the image becomes visible. &lt;br /&gt;
[[File:JOSM Mapping 06 Image Loaded.png|frame|none|The image loaded as a PicLayer]]&lt;br /&gt;
* Also make the Picture Layer the active layer, by clicking on the third button in the Layers Box Toolbar, when the Picture Layer is selected. By doing so, the tools for calibrating the picture will become visible in the toolbar at the left side. &lt;br /&gt;
[[File:JOSM Mapping 07 Image Layer Selected.png|frame|none|The image layer is now the selected layer]]&lt;br /&gt;
&lt;br /&gt;
== Calibrating the reference image == &lt;br /&gt;
* Click on the button with the green arrow to add three reference points on the image, each on one of the confluence points (where the latitude and longitude lines cross). &lt;br /&gt;
* Click on the button with the red arrow to move the reference points until they align with the corners of the rectangle. &lt;br /&gt;
* If you now make the image layer semi-transparent, you can see how the image aligns with the map. &lt;br /&gt;
* If you do not have the latitude and longitude lines, you should make the image layer semi transparent and try to align distinct points in the image with the map. &lt;br /&gt;
&lt;br /&gt;
[[File:JOSM Mapping 08 Image Layer Calibrated.png|frame|none|The image is now calibrated. The gray arrows of the rectangle of the data layer are now over the grid lines in the image.]]&lt;br /&gt;
[[File:JOSM Mapping 09 Image Layer Semi-Transparent.png|frame|none|Setting the image layer as semi transparent.]]&lt;br /&gt;
&lt;br /&gt;
== Mapping the points in the image ==&lt;br /&gt;
* Open a new data layer by pressing &#039;&#039;&#039;Ctrl + N&#039;&#039;&#039;&lt;br /&gt;
* Select the drawing tool by pressing &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
* Draw points on the positions of the image from which you want to know the coordinates.&lt;br /&gt;
* If there are several points, you should add a name for each point in the Properties Box on the right.&lt;br /&gt;
[[File:JOSM Mapping 10 Points Mapped And Named.png|frame|none|Mapping the points. They are visible as the light small rectangles in the black dots on the image.]]&lt;br /&gt;
* After all the points are mapped, right-click on the new data layer and select &#039;&#039;&#039;Save As ...&#039;&#039;&#039; and save it as XML file on your local file system. &lt;br /&gt;
[[File:JOSM Mapping 11 Exporting Points.png|frame|none|Exporting the mapped points.]]&lt;br /&gt;
* The file contains the coordinates of the selected points for further processing. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039;?&amp;gt;&lt;br /&gt;
&amp;lt;osm version=&#039;0.6&#039; upload=&#039;true&#039; generator=&#039;JOSM&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-95&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.881180287556537&#039; lon=&#039;-86.11194760698338&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;1&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-94&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.79249813630681&#039; lon=&#039;-86.10761639569195&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;2&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-93&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.403621057420668&#039; lon=&#039;-86.22455910056097&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;3&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-92&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.084582576302516&#039; lon=&#039;-86.11790302250911&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;6&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-91&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.20261349095152&#039; lon=&#039;-86.46277572159048&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;5&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-90&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.40062989709886&#039; lon=&#039;-86.83219726377988&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;4&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
&amp;lt;/osm&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Closing JOSM ==&lt;br /&gt;
* Close JOSM. &#039;&#039;&#039;WARNING&#039;&#039;&#039;: When you try to close JOSM, it will ask you if you want to upload the two data layers to OpenStreetMap and selects these options for you. &#039;&#039;&#039;DO NOT UPLOAD THE DATA!&#039;&#039;&#039; Click on &#039;&#039;&#039;Exit Now.&#039;&#039;&#039;&lt;br /&gt;
* JOSM will then ask if the calibration file for the image should be saved. You can do so, if you want to. It will be stored in the same directory as the image. The next time you select the image to be used by PicLayer it will detect this file and put the image in the correct position.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Retrieving_Geocoordinates_From_Points_In_Images&amp;diff=644</id>
		<title>Retrieving Geocoordinates From Points In Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Retrieving_Geocoordinates_From_Points_In_Images&amp;diff=644"/>
		<updated>2012-07-24T16:03:41Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: Images added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This manual will show how to get the geocoordinates from points in an image. &lt;br /&gt;
&lt;br /&gt;
The source image we use, shows six locations in the western part of Nicaragua. Though the image is of poor quality, luckily the lines for latitude and longitude are visible in the picture. &lt;br /&gt;
[[File:JOSM Mapping 00 Original Image.png|frame|none|The Source Image with six locations marked with circled dots]]&lt;br /&gt;
To start download the program JOSM from [http://josm.openstreetmap.de/ http://josm.openstreetmap.de/]. JOSM is a Java based Editor for [http://www.oepnstreetmap.org OpenStreetMap]. &lt;br /&gt;
[[File:JOSM Mapping 01 Initial Window.png|frame|none|The Initial Screen of JOSM]]&lt;br /&gt;
== Download PicLayer Plugin ==&lt;br /&gt;
* Start JOSM&lt;br /&gt;
* Press F12 to get to the Preferences Window&lt;br /&gt;
* Go to the Plugin-Tab&lt;br /&gt;
* Click on &#039;&#039;&#039;Download List&#039;&#039;&#039;&lt;br /&gt;
* Search for &#039;&#039;&#039;PicLayer&#039;&#039;&#039;&lt;br /&gt;
* Check the checkbox for the PicLayer plugin&lt;br /&gt;
* Click OK and restart JOSM&lt;br /&gt;
[[File:JOSM Mapping 02 Preferences Plugins.png|frame|none|Selecting the PicLayer Plugin]]&lt;br /&gt;
&lt;br /&gt;
== Select the OpenStreetMap Image Layer ==&lt;br /&gt;
* Go on &#039;&#039;&#039;Imagery&#039;&#039;&#039; and select &#039;&#039;&#039;OpenStreetMap (Mapnik)&#039;&#039;&#039;&lt;br /&gt;
* navigate to the area of interest&lt;br /&gt;
&lt;br /&gt;
== Draw a reference rectangle ==&lt;br /&gt;
&#039;&#039;This step can be skipped if the image does not show the lines for latitude and longitude, like the example image above does.&#039;&#039; &lt;br /&gt;
* Open a new Data Layer by pressing &#039;&#039;&#039;Ctrl + N&#039;&#039;&#039;&lt;br /&gt;
* Insert a new Point by pressing &#039;&#039;&#039;Shift + D&#039;&#039;&#039; and entering its coordinates and press OK. In this example we start with 13.0 -87.0. Repeat for the other points as well: 12.0 -87,0; 12.0 -86,0 and 13.0 -86,0.&lt;br /&gt;
* Switch to the drawing tool by pressing &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
* Connect the four points to a rectangle. &lt;br /&gt;
[[File:JOSM Mapping 03 Grid Rectangle.png|frame|none|The rectangle on the map]]&lt;br /&gt;
&lt;br /&gt;
== Loading the reference image ==&lt;br /&gt;
* In the Menu go on &#039;&#039;&#039;PicLayer&#039;&#039;&#039; and select &#039;&#039;&#039;New picture layer from file ...&#039;&#039;&#039;&lt;br /&gt;
* Select the prepared image.&lt;br /&gt;
* The Picture Layer may be displayed below the OpenStreetMap Layer. If so, move it up in the Layers Box, so that the image becomes visible. &lt;br /&gt;
[[File:JOSM Mapping 04 Image Loaded.png|frame|none|The image loaded as a PicLayer]]&lt;br /&gt;
* Also make the Picture Layer the active layer, by clicking on the third button in the Layers Box Toolbar, when the Picture Layer is selected. By doing so, the tools for calibrating the picture will become visible in the toolbar at the left side. &lt;br /&gt;
[[File:JOSM Mapping 05 Image Layer Selected.png|frame|none|The image layer is now the selected layer]]&lt;br /&gt;
&lt;br /&gt;
== Calibrating the reference image == &lt;br /&gt;
* Click on the button with the green arrow to add three reference points on the image, each on one of the confluence points (where the latitude and longitude lines cross). &lt;br /&gt;
* Click on the button with the red arrow to move the reference points until they align with the corners of the rectangle. &lt;br /&gt;
* If you now make the image layer semi-transparent, you can see how the image aligns with the map. &lt;br /&gt;
* If you do not have the latitude and longitude lines, you should make the image layer semi transparent and try to align distinct points in the image with the map. &lt;br /&gt;
&lt;br /&gt;
[[File:JOSM Mapping 06 Image Layer Calibrated.png|frame|none|The image is now calibrated. The gray arrows of the rectangle of the data layer are now over the grid lines in the image.]]&lt;br /&gt;
[[File:JOSM Mapping 07 Image Layer Semi-Transparent.png|frame|none|Setting the image layer as semi transparent.]]&lt;br /&gt;
&lt;br /&gt;
== Mapping the points in the image ==&lt;br /&gt;
* Open a new data layer by pressing &#039;&#039;&#039;Ctrl + N&#039;&#039;&#039;&lt;br /&gt;
* Select the drawing tool by pressing &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
* Draw points on the positions of the image from which you want to know the coordinates.&lt;br /&gt;
* If there are several points, you should add a name for each point in the Properties Box on the right.&lt;br /&gt;
[[File:JOSM Mapping 08 Points Mapped And Named.png|frame|none|Mapping the points. They are visible as the light small rectangles in the black dots on the image.]]&lt;br /&gt;
* After all the points are mapped, right-click on the new data layer and select &#039;&#039;&#039;Save As ...&#039;&#039;&#039; and save it as XML file on your local file system. &lt;br /&gt;
[[File:JOSM Mapping 09 Exporting Points.png|frame|none|Exporting the mapped points.]]&lt;br /&gt;
* The file contains the coordinates of the selected points for further processing. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039;?&amp;gt;&lt;br /&gt;
&amp;lt;osm version=&#039;0.6&#039; upload=&#039;true&#039; generator=&#039;JOSM&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-95&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.881180287556537&#039; lon=&#039;-86.11194760698338&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;1&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-94&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.79249813630681&#039; lon=&#039;-86.10761639569195&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;2&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-93&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.403621057420668&#039; lon=&#039;-86.22455910056097&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;3&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-92&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.084582576302516&#039; lon=&#039;-86.11790302250911&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;6&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-91&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.20261349095152&#039; lon=&#039;-86.46277572159048&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;5&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-90&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.40062989709886&#039; lon=&#039;-86.83219726377988&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;4&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
&amp;lt;/osm&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Closing JOSM ==&lt;br /&gt;
* Close JOSM. &#039;&#039;&#039;WARNING&#039;&#039;&#039;: When you try to close JOSM, it will ask you if you want to upload the two data layers to OpenStreetMap and selects these options for you. &#039;&#039;&#039;DO NOT UPLOAD THE DATA!&#039;&#039;&#039; Click on &#039;&#039;&#039;Exit Now.&#039;&#039;&#039;&lt;br /&gt;
* JOSM will then ask if the calibration file for the image should be saved. You can do so, if you want to. It will be stored in the same directory as the image. The next time you select the image to be used by PicLayer it will detect this file and put the image in the correct position.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Retrieving_Geocoordinates_From_Points_In_Images&amp;diff=643</id>
		<title>Retrieving Geocoordinates From Points In Images</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Retrieving_Geocoordinates_From_Points_In_Images&amp;diff=643"/>
		<updated>2012-07-24T15:13:18Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: description of the process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This manual will show how to get the geocoordinates from points in an image. &lt;br /&gt;
&lt;br /&gt;
The source image we use, shows six locations in the western part of Nicaragua. Though the image is of poor quality, luckily the lines for latitude and longitude are visible in the picture. &lt;br /&gt;
&lt;br /&gt;
To start download the program JOSM from [http://josm.openstreetmap.de/ http://josm.openstreetmap.de/]. JOSM is a Java based Editor for [http://www.oepnstreetmap.org OpenStreetMap]. &lt;br /&gt;
&lt;br /&gt;
== Download PicLayer Plugin ==&lt;br /&gt;
* Start JOSM&lt;br /&gt;
* Press F12 to get to the Preferences Window&lt;br /&gt;
* Go to the Plugin-Tab&lt;br /&gt;
* Click on &#039;&#039;&#039;Download List&#039;&#039;&#039;&lt;br /&gt;
* Search for &#039;&#039;&#039;PicLayer&#039;&#039;&#039;&lt;br /&gt;
* Check the checkbox for the PicLayer plugin&lt;br /&gt;
* Click OK and restart JOSM&lt;br /&gt;
&lt;br /&gt;
== Select the OpenStreetMap Image Layer ==&lt;br /&gt;
* Go on &#039;&#039;&#039;Imagery&#039;&#039;&#039; and select &#039;&#039;&#039;OpenStreetMap (Mapnik)&#039;&#039;&#039;&lt;br /&gt;
* navigate to the area of interest&lt;br /&gt;
&lt;br /&gt;
== Draw a reference rectangle ==&lt;br /&gt;
&#039;&#039;This step can be skipped if the image does not show the lines for latitude and longitude, like the example image above does.&#039;&#039; &lt;br /&gt;
* Open a new Data Layer by pressing &#039;&#039;&#039;Ctrl + N&#039;&#039;&#039;&lt;br /&gt;
* Insert a new Point by pressing &#039;&#039;&#039;Shift + D&#039;&#039;&#039; and entering its coordinates and press OK. In this example we start with 13.0 -87.0. Repeat for the other points as well: 12.0 -87,0; 12.0 -86,0 and 13.0 -86,0.&lt;br /&gt;
* Switch to the drawing tool by pressing &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
* Connect the four points to a rectangle. &lt;br /&gt;
&lt;br /&gt;
== Loading the reference image ==&lt;br /&gt;
* In the Menu go on &#039;&#039;&#039;PicLayer&#039;&#039;&#039; and select &#039;&#039;&#039;New picture layer from file ...&#039;&#039;&#039;&lt;br /&gt;
* Select the prepared image.&lt;br /&gt;
* The Picture Layer may be displayed below the OpenStreetMap Layer. If so, move it up in the Layers Box, so that the image becomes visible. &lt;br /&gt;
* Also make the Picture Layer the active layer, by clicking on the third button in the Layers Box Toolbar, when the Picture Layer is selected. By doing so, the tools for calibrating the picture will become visible in the toolbar at the left side. &lt;br /&gt;
&lt;br /&gt;
== Calibrating the reference image == &lt;br /&gt;
* Click on the button with the green arrow to add three reference points on the image, each on one of the confluence points (where the latitude and longitude lines cross). &lt;br /&gt;
* Click on the button with the red arrow to move the reference points until they align with the corners of the rectangle. &lt;br /&gt;
* If you now make the image layer semi-transparent, you can see how the image aligns with the map. &lt;br /&gt;
* If you do not have the latitude and longitude lines, you should make the image layer semi transparent and try to align distinct points in the image with the map. &lt;br /&gt;
&lt;br /&gt;
== Mapping the points in the image ==&lt;br /&gt;
* Open a new data layer by pressing &#039;&#039;&#039;Ctrl + N&#039;&#039;&#039;&lt;br /&gt;
* Select the drawing tool by pressing &#039;&#039;&#039;A&#039;&#039;&#039;&lt;br /&gt;
* Draw points on the positions of the image from which you want to know the coordinates.&lt;br /&gt;
* If there are several points, you should add a name for each point in the Properties Box on the right.&lt;br /&gt;
* After all the points are mapped, right-click on the new data layer and select &#039;&#039;&#039;Save As ...&#039;&#039;&#039; and save it as XML file on your local file system. &lt;br /&gt;
* The file contains the coordinates of the selected points for further processing. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&#039;1.0&#039; encoding=&#039;UTF-8&#039;?&amp;gt;&lt;br /&gt;
&amp;lt;osm version=&#039;0.6&#039; upload=&#039;true&#039; generator=&#039;JOSM&#039;&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-95&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.881180287556537&#039; lon=&#039;-86.11194760698338&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;1&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-94&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.79249813630681&#039; lon=&#039;-86.10761639569195&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;2&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-93&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.403621057420668&#039; lon=&#039;-86.22455910056097&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;3&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-92&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.084582576302516&#039; lon=&#039;-86.11790302250911&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;6&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-91&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.20261349095152&#039; lon=&#039;-86.46277572159048&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;5&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
  &amp;lt;node id=&#039;-90&#039; action=&#039;modify&#039; visible=&#039;true&#039; lat=&#039;12.40062989709886&#039; lon=&#039;-86.83219726377988&#039;&amp;gt;&lt;br /&gt;
    &amp;lt;tag k=&#039;name&#039; v=&#039;4&#039; /&amp;gt;&lt;br /&gt;
  &amp;lt;/node&amp;gt;&lt;br /&gt;
&amp;lt;/osm&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Closing JOSM ==&lt;br /&gt;
* Close JOSM. &#039;&#039;&#039;WARNING&#039;&#039;&#039;: When you try to close JOSM, it will ask you if you want to upload the two data layers to OpenStreetMap and selects these options for you. &#039;&#039;&#039;DO NOT UPLOAD THE DATA!&#039;&#039;&#039; Click on &#039;&#039;&#039;Exit Now.&#039;&#039;&#039;&lt;br /&gt;
* JOSM will then ask if the calibration file for the image should be saved. You can do so, if you want to. It will be stored in the same directory as the image. The next time you select the image to be used by PicLayer it will detect this file and put the image in the correct position.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=557</id>
		<title>Export Paradox Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=557"/>
		<updated>2012-07-23T08:41:35Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: /* Further Fixing Character Encoding */ Link Correktion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from Paradox Database files, based on the data set provided by the Museum Koenig. &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We received three dataset with data in the Paradox database format and were asked if we could extract the data and convert it to SQL.  &lt;br /&gt;
Paradox is a file based database system. Each table has at least two (usually more) files with the same based name and different file ending. &lt;br /&gt;
&lt;br /&gt;
Further Reading&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/paradox_file_structures A Brief Tour of Paradox Database Files]&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/understanding_filesystem_databases Understanding File-System Databases]&lt;br /&gt;
&lt;br /&gt;
== Viewing The Data ==&lt;br /&gt;
In order to view the data we first used the software [http://www.sportamok.com/development/delphi/8-paradox-dbase-reader Paradox dBase Reader]. Though all the structural information of the table was clearly visible, all the content was only displayed as garbage (Image 1). As it turns out, the files were password protected, the Paradox dBase Reader actually showed that they were protected in the general information page of the table (the checked checkbox at the bottom of the second image)&lt;br /&gt;
{|&lt;br /&gt;
|[[File:Paradox dBase Reader with Password Protected Data.png|frame|none|Viewing Password Encrypted Files in Paradox dbase Reader]]&lt;br /&gt;
|[[File:Paradox dBase Reader with Password Protected Data 2.png|frame|none|Information about the file in Paradox dbase Reader]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We then used the software [http://www.scalabium.com/pdx/ Paradox Viewer]. It promoted a dialog box asking to input the password. All encrypted Paradox files have a default password, depending on the version of Paradox used. For Paradox 5.0 and 7.0 this is either &amp;lt;code&amp;gt;jIGGAe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cupcdvum&amp;lt;/code&amp;gt; and for Paradox 4.0 it is &amp;lt;code&amp;gt;nx66ppx&amp;lt;/code&amp;gt;. The files were saved by Paradox 7 (as can be see on the general information page of the Paradox dBase Reader in the image above). In our case &amp;lt;code&amp;gt;jIGGAe&amp;lt;/code&amp;gt; was the correct password. Now the content was displayed correctly. However in the unregistered version Paradox Viewer only shows the first 100 entries and has no possibility to remove the password protection. &lt;br /&gt;
&lt;br /&gt;
== Removing Password Protection ==&lt;br /&gt;
The [http://www.mitec.cz/pde.html Paradox Data Editor] offers the functionality of removing the password protection from a table. It also opens the encrypted tables without even prompting for a password. In properties panel on the left, it still shows that the file is protected. Above you can also see the entry &amp;quot;Code Page: 437&amp;quot; which will become important later on. To remove the password protection, click on the key icon in the toolbar.&lt;br /&gt;
[[File:Paradox Data Editor.png|frame|none|Data already decrypted in Paradox Data Editor]]&lt;br /&gt;
&lt;br /&gt;
== Exporting the data ==&lt;br /&gt;
To export the data from the Paradox files, we used the software [http://jan.kneschke.de/projects/pxtools/ PXTools]. It runs under Linux but first it has be compiled and installed. &lt;br /&gt;
&lt;br /&gt;
=== Installing PXTools ===&lt;br /&gt;
After downloading the *.tar.gz file from the homepage of PXTools, run the following commands to install the software. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 tar -zxvf pxtools-0.0.20.tar.gz&lt;br /&gt;
 cd pxtools-0.0.20/&lt;br /&gt;
 ./configure&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo make clean&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see information about a table use the command&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 pxinfo -f COLEOPTE_DATA.DB&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using PXTools ===&lt;br /&gt;
To export the data from one table into the mysql file use the command&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 pxsqldump -d mysql -f COLEOPTE_DATA.DB -b COLEOPTE_DATA.MB -d coleopte_data&amp;gt; COLEOPTE_DATA.sql&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PXTools support export to CSV, XML, PostgreSQL and mySQL. In this example we will be exporting the data to mySQL. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using PXTools With A Script ===&lt;br /&gt;
Calling the tool as shown above, means that the command has to be adjusted and executed for each table individually. A more convenient way is use a script that will run for all of the tables automatically. The following code does just this as well as a few more things, which will be explained later on. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# parameters: $1=database_name $2=Paradox_File_Encoding&lt;br /&gt;
&lt;br /&gt;
if [ ! -d &amp;quot;sql&amp;quot; ]; then&lt;br /&gt;
	echo &amp;quot;creating &#039;sql&#039; directory&amp;quot;&lt;br /&gt;
	mkdir sql&lt;br /&gt;
fi&lt;br /&gt;
DBFILES=`find -maxdepth 1 \( -name &amp;quot;*.DB&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; \) `&lt;br /&gt;
&lt;br /&gt;
for i in $DBFILES&lt;br /&gt;
do &lt;br /&gt;
	echo &lt;br /&gt;
	echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
	echo &amp;quot;# Exporting $i&amp;quot;&lt;br /&gt;
	echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
	pxsqldump -d mysql -f $i -b $(echo &amp;quot;$i&amp;quot; | sed -e &#039;s/\.DB$/\.MB/&#039;) -n $1.$(echo &amp;quot;$i&amp;quot; | tr &#039;[:upper:]&#039; &#039;[:lower:]&#039;| sed -e &#039;s/\.db$//&#039; | sed -e &#039;s/.*\///&#039;) &amp;gt; sql/$(echo &amp;quot;$i&amp;quot; | tr &#039;[:upper:]&#039; &#039;[:lower:]&#039;| sed -e &#039;s/\.db$//&#039; | sed -e &#039;s/.*\///&#039;).sql&lt;br /&gt;
done &lt;br /&gt;
&lt;br /&gt;
cd sql&lt;br /&gt;
if [ ! -d &amp;quot;converted&amp;quot; ]; then&lt;br /&gt;
	mkdir converted&lt;br /&gt;
fi&lt;br /&gt;
SQLFILES=`find -maxdepth 1 \( -name &amp;quot;*.sql&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; \)`&lt;br /&gt;
&lt;br /&gt;
for i in $SQLFILES&lt;br /&gt;
do &lt;br /&gt;
	echo &amp;quot;Converting $i&amp;quot;&lt;br /&gt;
	iconv -f $2 -t UTF-8 &amp;lt; $i &amp;gt; converted/$i&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
cd converted&lt;br /&gt;
echo &lt;br /&gt;
echo &amp;quot;Joining SQL Files&amp;quot;&lt;br /&gt;
echo &amp;quot;CREATE DATABASE IF NOT EXISTS $1 ;&amp;quot; &amp;gt; $1.sql.tmp&lt;br /&gt;
echo &amp;quot;USE $1 ;&amp;quot; &amp;gt;&amp;gt; $1.sql.tmp&lt;br /&gt;
echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
&lt;br /&gt;
SQLFILES=`find \( -name &amp;quot;*.sql&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; ! -name &amp;quot;$1.sql&amp;quot; \)`&lt;br /&gt;
&lt;br /&gt;
for i in $SQLFILES&lt;br /&gt;
do &lt;br /&gt;
	cat $i &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo $i&lt;br /&gt;
done&lt;br /&gt;
echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; $1.sql.tmp&lt;br /&gt;
mv $1.sql.tmp ../../$1.sql&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the script above in a file called &#039;px2sql-all.sh&#039; and save it in the folder ~/bin/. Then run the following commands&lt;br /&gt;
&lt;br /&gt;
 PATH=$PATH:~/bin&lt;br /&gt;
 chmod +x ~/bin/px2sql-all.sh&lt;br /&gt;
&lt;br /&gt;
Here are the different processing steps the script does:&lt;br /&gt;
# creates a directory with the name &#039;sql&#039;&lt;br /&gt;
# goes through all the Paradox table files in the current directory and export them to individual sql files in the &#039;&#039;sql&#039;&#039; directory&lt;br /&gt;
# creates a subdirectory within the directory called &#039;converted&#039;&lt;br /&gt;
# goes through all the exported sql files and converts them to UTF-8. For this to work the script needs to know the Character Encoding of the original data. This is where the Code Page entry from the properties page in the Paradox Data Editor comes in play. In this example the Code Page was 437, so the character encoding is CP437. This will be used as a parameter when calling the script. &#039;&#039;See the man-page for the program iconv to see what other character encodings are supported. To learn more about character encoding, please read the article &#039;&#039;[http://www.joelonsoftware.com/articles/Unicode.html The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)]&#039;&#039; by Joel Spolsky.&#039;&#039;&lt;br /&gt;
# creates one sql file with code to create a database within the mySQL database engine. The content of all the individual sql files is then also added to this sql file. The resulting file is then copied in the directory in which the original Paradox files are. &lt;br /&gt;
&lt;br /&gt;
To run the script go into the directory where the Paradox data files are located and call the command&lt;br /&gt;
&lt;br /&gt;
 px2sql-all.sh &amp;lt;database name&amp;gt; &amp;lt;original character encoding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the name of the database is &#039;ornithol&#039; and the character encoding is CP437, so resulting command will be&lt;br /&gt;
&lt;br /&gt;
 px2sql-all.sh ornithol CP437&lt;br /&gt;
&lt;br /&gt;
The resulting file will be ornithol.sql which can then be imported into a mySQL database. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional Steps In Processing The Data == &lt;br /&gt;
&lt;br /&gt;
=== Documenting Table Relations ===&lt;br /&gt;
PXTools is not able to export the relations between the different columns of different tables (Foreign Key Relations). With the Paradox Data Editor it is however possible to view those relations. When a table is opened, click on the Icon &amp;quot;Structure Information&amp;quot; in the toolbar (the forth icon from the right, marked with a red rectangle in the Paradox Data Editor image above). This will open an info window with the structure information of the table (This window will not open, if the name of the Paradox file or the path to it contains any special characters). Go to the tab &amp;quot;Referential Integrity&amp;quot; and you will see a list of all the relations from this table. With these information it is possible to remodel the relations in mySQL. &lt;br /&gt;
[[File:Paradox Data Editor Structure Information.png|frame|none|Structural Information about the References to other tables]]&lt;br /&gt;
&lt;br /&gt;
=== Further Fixing Character Encoding ===&lt;br /&gt;
Though most of the data in the tables we received were encoded in CP437, some parts of it used different character encodings. This was fixed using the same method as described in [[Export_DataPerfect#converting_characters_individually|Export_DataPerfect (Section &#039;Converting Characters Individually&#039;)]].&lt;br /&gt;
&lt;br /&gt;
=== Turning BLOB Entries Into TEXT Entries ===&lt;br /&gt;
In our dataset a lot of large texts were stored in Paradox as BLOB objects. After exporting the data from Paradox these texts where in plain text in the mxSQL files, however the data type for the column was still BLOB. Though this works with mySQL we changed the data type for these columns to TEXT, so the text content is more easily editable and searchable within mySQL. &lt;br /&gt;
&lt;br /&gt;
=== Optimized For Import Speed ===&lt;br /&gt;
The way PXTools exports the data, makes it slow to import it in mySQL database again. When trying to import it using phpMyAdmin, several timeout occured. In some cased phpMyAdmin saved the last position and it was easy to continue importing, on other cased, the files had to be adjusted manually in order to continue the import at the correct position. When importing the files through the command line interface of mySQL it worked without errors, however, it still took quite a while. A dataset with 76000 entries took almost 50 minutes to import. After the data was imported, it was exported again. This time the data was optimized for a reimport. The same dataset now only took 30 seconds to import. However during the initial import some data points where there was no data from Paradox but were required by mySQL were filled out using default values. This therefore altered the data and so the reexported data is not equal to the initially exported data.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=556</id>
		<title>Export Paradox Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=556"/>
		<updated>2012-07-20T15:37:41Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: description and images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from Paradox Database files, based on the data set provided by the Museum Koenig. &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
We received three dataset with data in the Paradox database format and were asked if we could extract the data and convert it to SQL.  &lt;br /&gt;
Paradox is a file based database system. Each table has at least two (usually more) files with the same based name and different file ending. &lt;br /&gt;
&lt;br /&gt;
Further Reading&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/paradox_file_structures A Brief Tour of Paradox Database Files]&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/understanding_filesystem_databases Understanding File-System Databases]&lt;br /&gt;
&lt;br /&gt;
== Viewing The Data ==&lt;br /&gt;
In order to view the data we first used the software [http://www.sportamok.com/development/delphi/8-paradox-dbase-reader Paradox dBase Reader]. Though all the structural information of the table was clearly visible, all the content was only displayed as garbage (Image 1). As it turns out, the files were password protected, the Paradox dBase Reader actually showed that they were protected in the general information page of the table (the checked checkbox at the bottom of the second image)&lt;br /&gt;
{|&lt;br /&gt;
|[[File:Paradox dBase Reader with Password Protected Data.png|frame|none|Viewing Password Encrypted Files in Paradox dbase Reader]]&lt;br /&gt;
|[[File:Paradox dBase Reader with Password Protected Data 2.png|frame|none|Information about the file in Paradox dbase Reader]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
We then used the software [http://www.scalabium.com/pdx/ Paradox Viewer]. It promoted a dialog box asking to input the password. All encrypted Paradox files have a default password, depending on the version of Paradox used. For Paradox 5.0 and 7.0 this is either &amp;lt;code&amp;gt;jIGGAe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cupcdvum&amp;lt;/code&amp;gt; and for Paradox 4.0 it is &amp;lt;code&amp;gt;nx66ppx&amp;lt;/code&amp;gt;. The files were saved by Paradox 7 (as can be see on the general information page of the Paradox dBase Reader in the image above). In our case &amp;lt;code&amp;gt;jIGGAe&amp;lt;/code&amp;gt; was the correct password. Now the content was displayed correctly. However in the unregistered version Paradox Viewer only shows the first 100 entries and has no possibility to remove the password protection. &lt;br /&gt;
&lt;br /&gt;
== Removing Password Protection ==&lt;br /&gt;
The [http://www.mitec.cz/pde.html Paradox Data Editor] offers the functionality of removing the password protection from a table. It also opens the encrypted tables without even prompting for a password. In properties panel on the left, it still shows that the file is protected. Above you can also see the entry &amp;quot;Code Page: 437&amp;quot; which will become important later on. To remove the password protection, click on the key icon in the toolbar.&lt;br /&gt;
[[File:Paradox Data Editor.png|frame|none|Data already decrypted in Paradox Data Editor]]&lt;br /&gt;
&lt;br /&gt;
== Exporting the data ==&lt;br /&gt;
To export the data from the Paradox files, we used the software [http://jan.kneschke.de/projects/pxtools/ PXTools]. It runs under Linux but first it has be compiled and installed. &lt;br /&gt;
&lt;br /&gt;
=== Installing PXTools ===&lt;br /&gt;
After downloading the *.tar.gz file from the homepage of PXTools, run the following commands to install the software. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 tar -zxvf pxtools-0.0.20.tar.gz&lt;br /&gt;
 cd pxtools-0.0.20/&lt;br /&gt;
 ./configure&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo make clean&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To see information about a table use the command&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 pxinfo -f COLEOPTE_DATA.DB&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using PXTools ===&lt;br /&gt;
To export the data from one table into the mysql file use the command&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 pxsqldump -d mysql -f COLEOPTE_DATA.DB -b COLEOPTE_DATA.MB -d coleopte_data&amp;gt; COLEOPTE_DATA.sql&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PXTools support export to CSV, XML, PostgreSQL and mySQL. In this example we will be exporting the data to mySQL. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Using PXTools With A Script ===&lt;br /&gt;
Calling the tool as shown above, means that the command has to be adjusted and executed for each table individually. A more convenient way is use a script that will run for all of the tables automatically. The following code does just this as well as a few more things, which will be explained later on. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# parameters: $1=database_name $2=Paradox_File_Encoding&lt;br /&gt;
&lt;br /&gt;
if [ ! -d &amp;quot;sql&amp;quot; ]; then&lt;br /&gt;
	echo &amp;quot;creating &#039;sql&#039; directory&amp;quot;&lt;br /&gt;
	mkdir sql&lt;br /&gt;
fi&lt;br /&gt;
DBFILES=`find -maxdepth 1 \( -name &amp;quot;*.DB&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; \) `&lt;br /&gt;
&lt;br /&gt;
for i in $DBFILES&lt;br /&gt;
do &lt;br /&gt;
	echo &lt;br /&gt;
	echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
	echo &amp;quot;# Exporting $i&amp;quot;&lt;br /&gt;
	echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
	pxsqldump -d mysql -f $i -b $(echo &amp;quot;$i&amp;quot; | sed -e &#039;s/\.DB$/\.MB/&#039;) -n $1.$(echo &amp;quot;$i&amp;quot; | tr &#039;[:upper:]&#039; &#039;[:lower:]&#039;| sed -e &#039;s/\.db$//&#039; | sed -e &#039;s/.*\///&#039;) &amp;gt; sql/$(echo &amp;quot;$i&amp;quot; | tr &#039;[:upper:]&#039; &#039;[:lower:]&#039;| sed -e &#039;s/\.db$//&#039; | sed -e &#039;s/.*\///&#039;).sql&lt;br /&gt;
done &lt;br /&gt;
&lt;br /&gt;
cd sql&lt;br /&gt;
if [ ! -d &amp;quot;converted&amp;quot; ]; then&lt;br /&gt;
	mkdir converted&lt;br /&gt;
fi&lt;br /&gt;
SQLFILES=`find -maxdepth 1 \( -name &amp;quot;*.sql&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; \)`&lt;br /&gt;
&lt;br /&gt;
for i in $SQLFILES&lt;br /&gt;
do &lt;br /&gt;
	echo &amp;quot;Converting $i&amp;quot;&lt;br /&gt;
	iconv -f $2 -t UTF-8 &amp;lt; $i &amp;gt; converted/$i&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
cd converted&lt;br /&gt;
echo &lt;br /&gt;
echo &amp;quot;Joining SQL Files&amp;quot;&lt;br /&gt;
echo &amp;quot;CREATE DATABASE IF NOT EXISTS $1 ;&amp;quot; &amp;gt; $1.sql.tmp&lt;br /&gt;
echo &amp;quot;USE $1 ;&amp;quot; &amp;gt;&amp;gt; $1.sql.tmp&lt;br /&gt;
echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
&lt;br /&gt;
SQLFILES=`find \( -name &amp;quot;*.sql&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; ! -name &amp;quot;$1.sql&amp;quot; \)`&lt;br /&gt;
&lt;br /&gt;
for i in $SQLFILES&lt;br /&gt;
do &lt;br /&gt;
	cat $i &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo $i&lt;br /&gt;
done&lt;br /&gt;
echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; $1.sql.tmp&lt;br /&gt;
mv $1.sql.tmp ../../$1.sql&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save the script above in a file called &#039;px2sql-all.sh&#039; and save it in the folder ~/bin/. Then run the following commands&lt;br /&gt;
&lt;br /&gt;
 PATH=$PATH:~/bin&lt;br /&gt;
 chmod +x ~/bin/px2sql-all.sh&lt;br /&gt;
&lt;br /&gt;
Here are the different processing steps the script does:&lt;br /&gt;
# creates a directory with the name &#039;sql&#039;&lt;br /&gt;
# goes through all the Paradox table files in the current directory and export them to individual sql files in the &#039;&#039;sql&#039;&#039; directory&lt;br /&gt;
# creates a subdirectory within the directory called &#039;converted&#039;&lt;br /&gt;
# goes through all the exported sql files and converts them to UTF-8. For this to work the script needs to know the Character Encoding of the original data. This is where the Code Page entry from the properties page in the Paradox Data Editor comes in play. In this example the Code Page was 437, so the character encoding is CP437. This will be used as a parameter when calling the script. &#039;&#039;See the man-page for the program iconv to see what other character encodings are supported. To learn more about character encoding, please read the article &#039;&#039;[http://www.joelonsoftware.com/articles/Unicode.html The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)]&#039;&#039; by Joel Spolsky.&#039;&#039;&lt;br /&gt;
# creates one sql file with code to create a database within the mySQL database engine. The content of all the individual sql files is then also added to this sql file. The resulting file is then copied in the directory in which the original Paradox files are. &lt;br /&gt;
&lt;br /&gt;
To run the script go into the directory where the Paradox data files are located and call the command&lt;br /&gt;
&lt;br /&gt;
 px2sql-all.sh &amp;lt;database name&amp;gt; &amp;lt;original character encoding&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the name of the database is &#039;ornithol&#039; and the character encoding is CP437, so resulting command will be&lt;br /&gt;
&lt;br /&gt;
 px2sql-all.sh ornithol CP437&lt;br /&gt;
&lt;br /&gt;
The resulting file will be ornithol.sql which can then be imported into a mySQL database. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Additional Steps In Processing The Data == &lt;br /&gt;
&lt;br /&gt;
=== Documenting Table Relations ===&lt;br /&gt;
PXTools is not able to export the relations between the different columns of different tables (Foreign Key Relations). With the Paradox Data Editor it is however possible to view those relations. When a table is opened, click on the Icon &amp;quot;Structure Information&amp;quot; in the toolbar (the forth icon from the right, marked with a red rectangle in the Paradox Data Editor image above). This will open an info window with the structure information of the table (This window will not open, if the name of the Paradox file or the path to it contains any special characters). Go to the tab &amp;quot;Referential Integrity&amp;quot; and you will see a list of all the relations from this table. With these information it is possible to remodel the relations in mySQL. &lt;br /&gt;
[[File:Paradox Data Editor Structure Information.png|frame|none|Structural Information about the References to other tables]]&lt;br /&gt;
&lt;br /&gt;
=== Further Fixing Character Encoding ===&lt;br /&gt;
Though most of the data in the tables we received were encoded in CP437, some parts of it used different character encodings. This was fixed using the same method as described in [[Export_DataPerfect (Section &#039;Converting Characters Individually&#039;)||Export_DataPerfect#converting_characters_individually]]. &lt;br /&gt;
&lt;br /&gt;
=== Turning BLOB Entries Into TEXT Entries ===&lt;br /&gt;
In our dataset a lot of large texts were stored in Paradox as BLOB objects. After exporting the data from Paradox these texts where in plain text in the mxSQL files, however the data type for the column was still BLOB. Though this works with mySQL we changed the data type for these columns to TEXT, so the text content is more easily editable and searchable within mySQL. &lt;br /&gt;
&lt;br /&gt;
=== Optimized For Import Speed ===&lt;br /&gt;
The way PXTools exports the data, makes it slow to import it in mySQL database again. When trying to import it using phpMyAdmin, several timeout occured. In some cased phpMyAdmin saved the last position and it was easy to continue importing, on other cased, the files had to be adjusted manually in order to continue the import at the correct position. When importing the files through the command line interface of mySQL it worked without errors, however, it still took quite a while. A dataset with 76000 entries took almost 50 minutes to import. After the data was imported, it was exported again. This time the data was optimized for a reimport. The same dataset now only took 30 seconds to import. However during the initial import some data points where there was no data from Paradox but were required by mySQL were filled out using default values. This therefore altered the data and so the reexported data is not equal to the initially exported data.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=555</id>
		<title>Export Paradox Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=555"/>
		<updated>2012-06-11T12:59:45Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: complete script added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from Paradox Database files, based on the data set provided by the Museum König. &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Further Reading&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/paradox_file_structures A Brief Tour of Paradox Database Files]&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/understanding_filesystem_databases Understanding File-System Databases]&lt;br /&gt;
&lt;br /&gt;
== Viewing the Data ==&lt;br /&gt;
* [http://www.sportamok.com/development/delphi/8-paradox-dbase-reader Paradox dbase Reader]&lt;br /&gt;
* [http://www.scalabium.com/pdx/ Paradox Viewer] 30 day trial version&lt;br /&gt;
Paradox 5.0 and 7.0: &amp;lt;code&amp;gt;jIGGAe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cupcdvum&amp;lt;/code&amp;gt;&lt;br /&gt;
Paradox 4.0: &amp;lt;code&amp;gt;nx66ppx&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Removing Password Protection ==&lt;br /&gt;
* [http://www.mitec.cz/pde.html Paradox Data Editor]&lt;br /&gt;
&lt;br /&gt;
== Documenting Table Relations ==&lt;br /&gt;
&lt;br /&gt;
== Exporting the data ==&lt;br /&gt;
&lt;br /&gt;
=== Installing PX Tools ===&lt;br /&gt;
* http://jan.kneschke.de/projects/pxtools/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 tar -zxvf pxtools-0.0.20.tar.gz&lt;br /&gt;
 cd pxtools-0.0.20/&lt;br /&gt;
 ./configure&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo make clean&lt;br /&gt;
 pxinfo -f COLEOPTE_DATA.DB&lt;br /&gt;
 pxsqldump -d mysql -f COLEOPTE_DATA.DB -b COLEOPTE_DATA.MB -d coleopte_data&amp;gt; COLEOPTE_DATA.sql&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pxconvert.c.477: Read less than requested&lt;br /&gt;
 pxconvert.c.483: Extract failed: `���A�f,&amp;lt;�� != &lt;br /&gt;
 pxconvert.c.477: Read less than requested&lt;br /&gt;
 Speicherzugriffsfehler (Speicherabzug geschrieben)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 if [ ! -d &amp;quot;sql&amp;quot; ]; then &lt;br /&gt;
 	mkdir sql&lt;br /&gt;
 fi&lt;br /&gt;
 echo &lt;br /&gt;
 echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
 echo &amp;quot;# Exporting $1&amp;quot;&lt;br /&gt;
 echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
 pxsqldump -d mysql -f $1 -b $(echo &amp;quot;$1&amp;quot; | sed -e &#039;s/\.DB$/\.MB/&#039;) -n $(echo &amp;quot;$1&amp;quot; | tr &#039;[:upper:]&#039; &#039;[:lower:]&#039;| sed -e &#039;s/\.db$//&#039; | sed -e &#039;s/.*\///&#039;) &amp;gt; sql/$1.sql&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 PATH=$PATH:~/bin&lt;br /&gt;
 chmod +x ~/bin/px2sql.sh&lt;br /&gt;
 find -name &#039;*.DB&#039; -exec px2sql.sh {} \;&lt;br /&gt;
&lt;br /&gt;
//TODO SQL Join script&lt;br /&gt;
//TODO encoding&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
# parameters: $1=database_name $2=Paradox_File_Encoding&lt;br /&gt;
&lt;br /&gt;
if [ ! -d &amp;quot;sql&amp;quot; ]; then&lt;br /&gt;
	echo &amp;quot;creating &#039;sql&#039; directory&amp;quot;&lt;br /&gt;
	mkdir sql&lt;br /&gt;
fi&lt;br /&gt;
DBFILES=`find -maxdepth 1 \( -name &amp;quot;*.DB&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; \) `&lt;br /&gt;
&lt;br /&gt;
for i in $DBFILES&lt;br /&gt;
do &lt;br /&gt;
	echo &lt;br /&gt;
	echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
	echo &amp;quot;# Exporting $i&amp;quot;&lt;br /&gt;
	echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
	pxsqldump -d mysql -f $i -b $(echo &amp;quot;$i&amp;quot; | sed -e &#039;s/\.DB$/\.MB/&#039;) -n $1.$(echo &amp;quot;$i&amp;quot; | tr &#039;[:upper:]&#039; &#039;[:lower:]&#039;| sed -e &#039;s/\.db$//&#039; | sed -e &#039;s/.*\///&#039;) &amp;gt; sql/$(echo &amp;quot;$i&amp;quot; | tr &#039;[:upper:]&#039; &#039;[:lower:]&#039;| sed -e &#039;s/\.db$//&#039; | sed -e &#039;s/.*\///&#039;).sql&lt;br /&gt;
done &lt;br /&gt;
&lt;br /&gt;
cd sql&lt;br /&gt;
if [ ! -d &amp;quot;converted&amp;quot; ]; then&lt;br /&gt;
	mkdir converted&lt;br /&gt;
fi&lt;br /&gt;
SQLFILES=`find -maxdepth 1 \( -name &amp;quot;*.sql&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; \)`&lt;br /&gt;
&lt;br /&gt;
for i in $SQLFILES&lt;br /&gt;
do &lt;br /&gt;
	echo &amp;quot;Converting $i&amp;quot;&lt;br /&gt;
	iconv -f $2 -t UTF-8 &amp;lt; $i &amp;gt; converted/$i&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
cd converted&lt;br /&gt;
echo &lt;br /&gt;
echo &amp;quot;Joining SQL Files&amp;quot;&lt;br /&gt;
echo &amp;quot;CREATE DATABASE IF NOT EXISTS $1 ;&amp;quot; &amp;gt; $1.sql.tmp&lt;br /&gt;
echo &amp;quot;USE $1 ;&amp;quot; &amp;gt;&amp;gt; $1.sql.tmp&lt;br /&gt;
echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
&lt;br /&gt;
SQLFILES=`find \( -name &amp;quot;*.sql&amp;quot; ! -name &amp;quot;BDS_*&amp;quot; ! -name &amp;quot;$1.sql&amp;quot; \)`&lt;br /&gt;
&lt;br /&gt;
for i in $SQLFILES&lt;br /&gt;
do &lt;br /&gt;
	cat $i &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo &amp;gt;&amp;gt; $1.sql.tmp &lt;br /&gt;
	echo $i&lt;br /&gt;
done&lt;br /&gt;
echo &amp;quot;&amp;quot; &amp;gt;&amp;gt; $1.sql.tmp&lt;br /&gt;
mv $1.sql.tmp ../../$1.sql&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 px2sql-all.sh ornithol CP437&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=554</id>
		<title>Export Paradox Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=554"/>
		<updated>2012-06-04T15:04:33Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: save working copy&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from Paradox Database files, based on the data set provided by the Museum König. &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Further Reading&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/paradox_file_structures A Brief Tour of Paradox Database Files]&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/understanding_filesystem_databases Understanding File-System Databases]&lt;br /&gt;
&lt;br /&gt;
== Viewing the Data ==&lt;br /&gt;
* [http://www.sportamok.com/development/delphi/8-paradox-dbase-reader Paradox dbase Reader]&lt;br /&gt;
* [http://www.scalabium.com/pdx/ Paradox Viewer] 30 day trial version&lt;br /&gt;
Paradox 5.0 and 7.0: &amp;lt;code&amp;gt;jIGGAe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cupcdvum&amp;lt;/code&amp;gt;&lt;br /&gt;
Paradox 4.0: &amp;lt;code&amp;gt;nx66ppx&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Removing Password Protection ==&lt;br /&gt;
* [http://www.mitec.cz/pde.html Paradox Data Editor]&lt;br /&gt;
&lt;br /&gt;
== Documenting Table Relations ==&lt;br /&gt;
&lt;br /&gt;
== Exporting the data ==&lt;br /&gt;
&lt;br /&gt;
=== Installing PX Tools ===&lt;br /&gt;
* http://jan.kneschke.de/projects/pxtools/&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 tar -zxvf pxtools-0.0.20.tar.gz&lt;br /&gt;
 cd pxtools-0.0.20/&lt;br /&gt;
 ./configure&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo make clean&lt;br /&gt;
 pxinfo -f COLEOPTE_DATA.DB&lt;br /&gt;
 pxsqldump -d mysql -f COLEOPTE_DATA.DB -b COLEOPTE_DATA.MB -d coleopte_data&amp;gt; COLEOPTE_DATA.sql&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 pxconvert.c.477: Read less than requested&lt;br /&gt;
 pxconvert.c.483: Extract failed: `���A�f,&amp;lt;�� != &lt;br /&gt;
 pxconvert.c.477: Read less than requested&lt;br /&gt;
 Speicherzugriffsfehler (Speicherabzug geschrieben)&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;pre&amp;quot;&amp;gt;&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 if [ ! -d &amp;quot;sql&amp;quot; ]; then &lt;br /&gt;
 	mkdir sql&lt;br /&gt;
 fi&lt;br /&gt;
 echo &lt;br /&gt;
 echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
 echo &amp;quot;# Exporting $1&amp;quot;&lt;br /&gt;
 echo &amp;quot;#############################&amp;quot;&lt;br /&gt;
 pxsqldump -d mysql -f $1 -b $(echo &amp;quot;$1&amp;quot; | sed -e &#039;s/\.DB$/\.MB/&#039;) -n $(echo &amp;quot;$1&amp;quot; | tr &#039;[:upper:]&#039; &#039;[:lower:]&#039;| sed -e &#039;s/\.db$//&#039; | sed -e &#039;s/.*\///&#039;) &amp;gt; sql/$1.sql&lt;br /&gt;
 &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 PATH=$PATH:~/bin&lt;br /&gt;
 chmod +x ~/bin/px2sql.sh&lt;br /&gt;
 find -name &#039;*.DB&#039; -exec px2sql.sh {} \;&lt;br /&gt;
&lt;br /&gt;
//TODO SQL Join script&lt;br /&gt;
//TODO encoding&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=553</id>
		<title>Export Paradox Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_Paradox_Data&amp;diff=553"/>
		<updated>2012-06-04T10:22:15Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: first overview&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from Paradox Database files, based on the data set provided by the Museum König. &lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Further Reading&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/paradox_file_structures A Brief Tour of Paradox Database Files]&lt;br /&gt;
* [http://www.sundialservices.com/articles/paradox/understanding_filesystem_databases Understanding File-System Databases]&lt;br /&gt;
&lt;br /&gt;
== Viewing the Data ==&lt;br /&gt;
* [http://www.sportamok.com/development/delphi/8-paradox-dbase-reader Paradox dbase Reader]&lt;br /&gt;
* [http://www.scalabium.com/pdx/ Paradox Viewer] 30 day trial version&lt;br /&gt;
Paradox 5.0 and 7.0: &amp;lt;code&amp;gt;jIGGAe&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cupcdvum&amp;lt;/code&amp;gt;&lt;br /&gt;
Paradox 4.0: &amp;lt;code&amp;gt;nx66ppx&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Removing Password Protection ==&lt;br /&gt;
* [http://www.mitec.cz/pde.html Paradox Data Editor]&lt;br /&gt;
&lt;br /&gt;
== Documenting Table Relations ==&lt;br /&gt;
&lt;br /&gt;
== Exporting the data ==&lt;br /&gt;
&lt;br /&gt;
=== Installing PX Tools ===&lt;br /&gt;
* http://jan.kneschke.de/projects/pxtools/&lt;br /&gt;
 tar -zxvf pxtools-0.0.20.tar.gz&lt;br /&gt;
 cd pxtools-0.0.20/&lt;br /&gt;
 ./configure&lt;br /&gt;
 sudo make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo make clean&lt;br /&gt;
 pxinfo -f COLEOPTE_DATA.DB&lt;br /&gt;
 pxsqldump -d mysql -f COLEOPTE_TAXA.DB &amp;gt; sql/COLEOPTE_TAXA.sql&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=551</id>
		<title>Export DataPerfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=551"/>
		<updated>2012-03-19T17:24:03Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: last steps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from a DataPerfect database, based on the Rohwer data set. &lt;br /&gt;
&lt;br /&gt;
Data Perfect is a DOS based database system. It&#039;s latest release is 2.6Y from June 2008. It can be downloaded via http://dataperfect.nl/ . &lt;br /&gt;
&lt;br /&gt;
=== Install and run DOSBox ===&lt;br /&gt;
: To run DataPerfect a DOS emulator is needed. The free emulator DOSBox works quite well. Go to http://www.dosbox.com/download.php?main=1 or http://sourceforge.net/projects/dosbox/, download the latest release and install it. For this articles DOSBox 0.74 will be used and installed under Windows 7. &lt;br /&gt;
&lt;br /&gt;
===  Download DataPerfect ===&lt;br /&gt;
: Go to http://dataperfect.nl/ and download the DataPerfect. Unzip the files into a specific folder. The folder used for this article is &#039;&#039;C:/DOS/DP26Y&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Copy your data files in the DataPerfect Folder===&lt;br /&gt;
: You can either copy them directly in the folder or create a subfolder for your data files and copy them in there. The data files for this article are located in the directory &#039;&#039;DIAS/&#039;&#039; within the DataPerfect folder.&lt;br /&gt;
&lt;br /&gt;
=== Start DOSBox===&lt;br /&gt;
: When starting DOSBox a second console window is opened. When running several instances of DOSBox these additional windows can bloat the window bar quite a bit. To avoid this just start the version &#039;&#039;DOXBox-0.74/Extras/DOSBox 0.74 (noconsole)&#039;&#039; from the Program Menu.&lt;br /&gt;
[[File:DPE01_DOSBox.png|frame|none|The DOSBOX Start Window]]&lt;br /&gt;
&lt;br /&gt;
=== Mount the DataPerfect Folder===&lt;br /&gt;
: After starting DOSBox the directory of the DataPerfect files needs to be mounted as a virtual drive. Type &#039;&#039;&#039;mount c C:\DOS\DP27Y&#039;&#039;&#039; to mount the folder and &#039;&#039;&#039;C:&#039;&#039;&#039; to change to the drive. &lt;br /&gt;
[[File:DPE02_DOSBox_mount.png|frame|none|Mounting the DataPerfect Folder]]&lt;br /&gt;
&lt;br /&gt;
=== Start DataPerfect===&lt;br /&gt;
: Start DataPerfect by typing &#039;&#039;&#039;DP26YU&#039;&#039;&#039; and pressing Enter.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE03_DataPerfect_start.png|frame|none|Switch to C: and start DataPerfect]]&lt;br /&gt;
|[[File:DPE04_DataPerfect_welcome.png|frame|none|The Welcome Screen of DataPerfect]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Change to the folder of your data files===&lt;br /&gt;
: If the data files are not in the directory of DataPerfect you need to change the directory. Press &#039;&#039;&#039;2&#039;&#039;&#039; to change the directory and type in the path to the directory of your data. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE05_DataPerfect_open.png|frame|none| The initial screen of DataPerfect]]&lt;br /&gt;
|[[File:DPE06_DataPerfect_change_directory.png|frame|none|Change to the data directory]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Open the data files===&lt;br /&gt;
: If you are in the correct directory you see the DataPerfect datasets within the folder. Use the cursor keys to select the correct data set and press enter.&lt;br /&gt;
[[File:DPE07_DataPerfect_select_DIAS.png|frame|none|Selecting the DIAS data set.]]&lt;br /&gt;
&lt;br /&gt;
=== Select the table to export ===&lt;br /&gt;
You can now see the tables within this database project. Select the table you want to export by using the up or down keys and pressing enter. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE08_DIAS_Overview.png|frame|none|The list of available tables.]]&lt;br /&gt;
|[[File:DPE09_DIAS_Table1.png|frame|none|The first entry in the first table of DIAS]]&lt;br /&gt;
|}&lt;br /&gt;
=== Navigate the Table ===&lt;br /&gt;
&#039;&#039;This these steps are not necessary for the export, but will be documented here anyway.&#039;&#039; &lt;br /&gt;
Here are important keys for navigating thought a table: &lt;br /&gt;
* &#039;&#039;&#039;Tab&#039;&#039;&#039; the next field is highlighted&lt;br /&gt;
* &#039;&#039;&#039;Down&#039;&#039;&#039; on a field which has references to entries in another table, that referenced entry is displayed&lt;br /&gt;
* &#039;&#039;&#039;Up&#039;&#039;&#039; The list of entries in this table where the content of the current field is displayed. Navigate though this list using the &#039;&#039;&#039;Up&#039;&#039;&#039; and &#039;&#039;&#039;Down&#039;&#039;&#039; keys. When typing characters this list the focus will jump to the entry whose unique key column is like the typed characters. For example in the table displayed in the image below, typing a number will focus on the entry with that id. The corresponding entry is automatically displayed. To edit this entry, press &#039;&#039;&#039;Enter&#039;&#039;&#039;. &lt;br /&gt;
* &#039;&#039;&#039;F7&#039;&#039;&#039; Goes to the next upper level in the hierarchy. For example if the list of entries is opened, it will jump back to the next upper level in the hierarchy. &lt;br /&gt;
[[File:DPE10_DIAS_Table1_browse.png|frame|none|Browsing through the first table of DIAS]]&lt;br /&gt;
&lt;br /&gt;
=== Select Report ===&lt;br /&gt;
From the list of available reports select the entry at the top: &#039;&#039;&#039;Build-In Short Reports&#039;&#039;&#039;.&lt;br /&gt;
[[File:DPE11_DIAS_Table1_Report_List.png|frame|none|The list of available reports.]]&lt;br /&gt;
&lt;br /&gt;
=== Set Export Properties ===&lt;br /&gt;
Set the export settings as shown in the first image below. Press the number of the property you want to change. For example, to change the file name of the output file, press &#039;&#039;&#039;2&#039;&#039;&#039; and the file options will appear, as can be seen in the second image. Press &#039;&#039;&#039;1&#039;&#039;&#039; to create a new file and enter the name of the file (image 3). &lt;br /&gt;
The filename of the export file must not be longer than 8 characters without file extension and the file extension itself (without the dot) must not be longer than 3 characters.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE12_DIAS_Table1_Export_1.png|frame|none|Export Settings Overview]]&lt;br /&gt;
|[[File:DPE13_DIAS_Table1_Export_2.png|frame|none|Changing the File Options]]&lt;br /&gt;
|[[File:DPE14_DIAS_Table1_Export_3.png|frame|none|Changing the File Name]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run Export ===&lt;br /&gt;
To start the export press &#039;&#039;&#039;Shift + F7&#039;&#039;&#039; again. The screen now shows a counter of how many elements from the table have already been exported. DOSBox starts with a limited CPU speed for the programs running in it. The speed can be increased by pressing &#039;&#039;&#039;Ctrl + F12&#039;&#039;&#039;. Increasing the speed to much, however creates a big overhead which will also result in a slower export. For some reason when increasing the speed the CPU load will jump from around 5% of one core to 100% within just 2-3 increase steps. So the CPU load should be watched when increasing the speed of DOSBox. On a DualCore 3 GHz Processor a speed of 50000-55000 cycles (can be seen in the title bar of the DOSBox Window) appears to be a good export speed without overhead.  &lt;br /&gt;
[[File:DPE15_DIAS_Export.png|frame|none|The export is running.]]&lt;br /&gt;
&lt;br /&gt;
After the export is done, you will see the list of available reports again. To step to the next higher level of the hierarchy press &#039;&#039;&#039;F7&#039;&#039;&#039;. Repeat this until you see the list of tables within this database project again. Now repeat the export process for all the other tables you want to export. &lt;br /&gt;
&lt;br /&gt;
=== Converting special characters ===&lt;br /&gt;
The best way to handle special characters is to know the character encoding by the original file system. If it is a DOS based system, the command &#039;&#039;&#039;CHCP&#039;&#039;&#039; will display what Character Code Page used. With this knowledge the file can be easily converted. In DOSBox the Command is &#039;&#039;&#039;KEYB&#039;&#039;&#039; however, it only helps if all of the special characters are displayed correctly within the DataPerfect. In the case of the Rohwer data set, the KEYB command showed Codepage 437, however Codepage 850 was actually used, must of the special characters are however identical between the two sets. &lt;br /&gt;
&lt;br /&gt;
Once the character encoding is known the exported file converted by a program that is able to read that encoding. Under Windows Notepad++ does a good job. After opening the file (the special characters are probably distorted), one must select the original character encoding as the encoding of the file and then convert the file to UTF-8. &lt;br /&gt;
&lt;br /&gt;
Google Refine is another software that is able to read the CP 850 encoding and allows for further processing of the files.&lt;br /&gt;
&lt;br /&gt;
Additional Infomation about Codepages can be found on the Wikipedia Article &#039;&#039;[http://en.wikipedia.org/wiki/Code_page Code page]&#039;&#039;. Also the article &#039;&#039;[http://www.joelonsoftware.com/articles/Unicode.html The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)]&#039;&#039; by Joel Spolsky is very helpful. &lt;br /&gt;
&lt;br /&gt;
In retrospective we now know that the Rohwer data set is encoded using the Codepage 850 (also called OEM 850), however some single characters are in the wrong encoding. This however is the result of the process where we parsed the file, got a list of all the different characters used and looked them up and converted them by hand. Though this process is a lot more work, but it works even in the case of mixed character sets. It is documented in detail below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== converting characters individually ====&lt;br /&gt;
The export out of DataPerfect has problems with special characters which are not converted correctly in a proper character set. Though all of the occurrences of such special characters can be replaced automatically, each of the character to be replaced has to be defined manually one. The files as they are generated by DataPerfect use the ANSI Character Encoding. This needs to be converted to UTF8. Under Windows the free program Notepad++ is very suited for this. When selecting the menu item &#039;&#039;&#039;Encoding&#039;&#039;&#039; (&#039;&#039;Kodierung&#039;&#039; in the image, because it is the German version of Notepad++), the entry &#039;&#039;ANSI&#039;&#039; should be marked as the current encoding. Now click on &#039;&#039;&#039;Convert to UTF-8&#039;&#039;&#039; and save the file. &lt;br /&gt;
[[File:DPE16 Notepad CharSet.png|frame|none|Converting the Character Set in Notepad++]]&lt;br /&gt;
The next step is to run the file through a program that converts the characters. The small Java program CharReplacer was written just to do that. There are two different files to that program: CharReplacer.class (the acutual program) and CharReplacer.settings (the settings file, which specifies, what characters to replace. The first line in &#039;&#039;CharReplacer.settings&#039;&#039; are all the characters which will not be replaced. All the following lines have the number value of the character which will be replaced, followed by a tab and the character it will be replaced with.&lt;br /&gt;
&lt;br /&gt;
 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&amp;quot;,.-; ()?\&#039;:/=&amp;amp;[]!`&amp;lt;&amp;gt;#+%&lt;br /&gt;
 8222	ä&lt;br /&gt;
 8221	ö&lt;br /&gt;
 129	ü&lt;br /&gt;
 225	ß&lt;br /&gt;
 381	Ä&lt;br /&gt;
 8482	Ö&lt;br /&gt;
 353	Ü&lt;br /&gt;
Excerpt from the &#039;&#039;CharReplacer.settings&#039;&#039; file.&lt;br /&gt;
 &lt;br /&gt;
To run the CharReplacer program, the Java Runtime Envirement (JRE) must be installed on a computer. It must be run via the command line interface (also known as console). &lt;br /&gt;
&lt;br /&gt;
Under Windows the Command Prompt (cmd.exe) can be used, but it needs to be adjusted to show the UTF-8 characters. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(The following steps displayed in italics only need to be done if the Windows Command Prompt is used.)&#039;&#039;&lt;br /&gt;
* Copy the files CharReplacer.class and CharReplacer.settings in the folder in which the exported files are (in the example from above it is C:\DOS\DP26Y\DIAS\)&lt;br /&gt;
* Start the console.&lt;br /&gt;
* Change to the directory in which the files are.&lt;br /&gt;
* &#039;&#039;Set the Font for the Command Prompt to &#039;&#039;&#039;Lucida Console&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Switch the Character Set for the console by typing &#039;&#039;&#039;chcp 65001&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* run the program by typing &#039;&#039;&#039;java -Dfile.encoding=UTF-8 CharReplacer&#039;&#039;&#039; followed by the name or names of the files you want to run the program on, e.g. &#039;&#039;java -Dfile.encoding=UTF-8 CharReplacer OUTPUT1.EXP&#039;&#039; and hit Enter.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE17 Console change Font.png|frame|none|Changing the Font in the Windows Command Prompt (German version)]]&lt;br /&gt;
|[[File:DPE18 Console start CharReplacer.png|frame|none|Running the CharReplacer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The output of the program will be a file with the name of the input file, but with an additional &#039;&#039;&#039;.csv&#039;&#039;&#039; extension at the end. So &#039;&#039;&#039;OUTPUT1.EXP&#039;&#039;&#039; will become &#039;&#039;&#039;OUTPUT1.EXP.csv&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the program find characters which are not in the list of allowed characters (the first line of the file) and for which no replacement rule exists, it will not replace this character, but it will show a message, informing the user that an unknown character was found, where it was found (file, line and column), what it looks like in UTF-8 and what its code is. If this occurs it is necessary to review the file at this position and create a new rule on how to handle that character. If the program prints out an unknown character, open the file and look at the given position. If the character is correct and represents precisely what was meant in the original dataset, then add this character at the end of the first line in the settings file. If it is a wrong character however, try to figure out what character it is meant to be. This could be derived from the context in which this unknown character appears. In the example below, the unknown character is displayed as &#039;&#039;&#039;†&#039;&#039;&#039; and appears in the work &#039;&#039;&#039;&amp;quot;R†dhusplassen&amp;quot;&#039;&#039;&#039;. People how are familiar with Norwegian might recognize the word as &#039;&#039;&#039;&amp;quot;Rådhusplassen&amp;quot;&#039;&#039;&#039; (the Norwegian word for &amp;quot;City Hall Place&amp;quot; or &amp;quot;Town Hall Place&amp;quot;). In other cased it could be not so clear. So it becomes necessary to look up the entry in the original DataPerfect table and see, what character was originally entered. In the third image, it can be seen that in this case the unknown character is indeed a &#039;&#039;&#039;å&#039;&#039;&#039;. So a new line can be added at the end of the settings file with the following content: &lt;br /&gt;
 8224	å&lt;br /&gt;
The 8224 is the code for the character, as shown in the message of the CharReplacer program in the first image. &lt;br /&gt;
&lt;br /&gt;
To edit the &#039;&#039;CharReplacer.settings&#039;&#039; file, use a regular text editor (like Notepad++ under Windows).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE19 Console run CharReplacer.png‎|frame|none|some unknown characters were found]]&lt;br /&gt;
|[[File:DPE20_Notepad_Special_Characters.png‎|frame|none|Viewing the unconverted character in Notepad++]]&lt;br /&gt;
|[[File:DPE21 DataPerfect Special Characters.png|frame|none|Viewing the unconverted character in the original data entry in DataPerfect.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Documenting Foreign Key Relations ===&lt;br /&gt;
When the data is exported out of DataPerfect the associations between the tables are lost. So it is important to take a look at the exported data and see the relation between the tables. What columns are unique keys for their table and what columns are foreign key links to other tables. Looking at the tables in DataPerfect is helpful in this context, as the UI of DataPerfect sometimes shows columns which are not part of the export of that table, so they must be loaded from a different table. Sometimes when selecting a field in DataPerfect it also opens the window to another table, making it obvious that this column is a foreign key connection.&lt;br /&gt;
&lt;br /&gt;
=== Importing into a modern relational database ===&lt;br /&gt;
Once the data is exported, converted into UTF-8 and the foreign key relations have been analyzed, it is possible to import the data in a modern relational data base, so it can be accessed by the BioCASe Provider Software. To do this, one must first create a database for it and the respective tables. The columns of the tables must already be prepared. It is important that the maximal length allowed for the columns is not smaller then the longest entry in this columns. Also the data formats must be correct. Though it is possible to store any kind of data in a text field, it will be more useful if the data is actually stored using the format it actually is. &lt;br /&gt;
&lt;br /&gt;
=== Next Steps ===&lt;br /&gt;
Depending on how the tables are structured, it might become necessary to do a controlled denormalization so that the entries can be easier mapped to ABCD. This is described on the [http://wiki.bgbm.org/bps/index.php/Preparation Preparation page] of the [http://wiki.bgbm.org/bps BioCASe Provider Software Wiki].&lt;br /&gt;
&lt;br /&gt;
The other following steps are also described at the BioCASe Provider Software Wiki, like the mapping of the ABCD concepts. &lt;br /&gt;
&lt;br /&gt;
=== Alternative Ways of exporting data from a DataPerfect database ===&lt;br /&gt;
Another way of exporting DataPerfect files is the [http://dans-dp-lib.sourceforge.net/ DANS DataPerfect Library]. There is a reference implementation of a [http://dans-dp-lib.sourceforge.net/Dp2MySqlExport.java DP2MySQLConverter]. After testing it on small sample databases, it worked fine, but it ran intro problems exporting the DIAS database, causing huge and corrupt output files. For other DataPerfect files it could still be useful, especially since it already handles the special characters correctly.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=550</id>
		<title>Export DataPerfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=550"/>
		<updated>2012-03-19T17:10:12Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: /* Documenting Foreign Key Relations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from a DataPerfect database, based on the Rohwer data set. &lt;br /&gt;
&lt;br /&gt;
Data Perfect is a DOS based database system. It&#039;s latest release is 2.6Y from June 2008. It can be downloaded via http://dataperfect.nl/ . &lt;br /&gt;
&lt;br /&gt;
=== Install and run DOSBox ===&lt;br /&gt;
: To run DataPerfect a DOS emulator is needed. The free emulator DOSBox works quite well. Go to http://www.dosbox.com/download.php?main=1 or http://sourceforge.net/projects/dosbox/, download the latest release and install it. For this articles DOSBox 0.74 will be used and installed under Windows 7. &lt;br /&gt;
&lt;br /&gt;
===  Download DataPerfect ===&lt;br /&gt;
: Go to http://dataperfect.nl/ and download the DataPerfect. Unzip the files into a specific folder. The folder used for this article is &#039;&#039;C:/DOS/DP26Y&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Copy your data files in the DataPerfect Folder===&lt;br /&gt;
: You can either copy them directly in the folder or create a subfolder for your data files and copy them in there. The data files for this article are located in the directory &#039;&#039;DIAS/&#039;&#039; within the DataPerfect folder.&lt;br /&gt;
&lt;br /&gt;
=== Start DOSBox===&lt;br /&gt;
: When starting DOSBox a second console window is opened. When running several instances of DOSBox these additional windows can bloat the window bar quite a bit. To avoid this just start the version &#039;&#039;DOXBox-0.74/Extras/DOSBox 0.74 (noconsole)&#039;&#039; from the Program Menu.&lt;br /&gt;
[[File:DPE01_DOSBox.png|frame|none|The DOSBOX Start Window]]&lt;br /&gt;
&lt;br /&gt;
=== Mount the DataPerfect Folder===&lt;br /&gt;
: After starting DOSBox the directory of the DataPerfect files needs to be mounted as a virtual drive. Type &#039;&#039;&#039;mount c C:\DOS\DP27Y&#039;&#039;&#039; to mount the folder and &#039;&#039;&#039;C:&#039;&#039;&#039; to change to the drive. &lt;br /&gt;
[[File:DPE02_DOSBox_mount.png|frame|none|Mounting the DataPerfect Folder]]&lt;br /&gt;
&lt;br /&gt;
=== Start DataPerfect===&lt;br /&gt;
: Start DataPerfect by typing &#039;&#039;&#039;DP26YU&#039;&#039;&#039; and pressing Enter.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE03_DataPerfect_start.png|frame|none|Switch to C: and start DataPerfect]]&lt;br /&gt;
|[[File:DPE04_DataPerfect_welcome.png|frame|none|The Welcome Screen of DataPerfect]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Change to the folder of your data files===&lt;br /&gt;
: If the data files are not in the directory of DataPerfect you need to change the directory. Press &#039;&#039;&#039;2&#039;&#039;&#039; to change the directory and type in the path to the directory of your data. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE05_DataPerfect_open.png|frame|none| The initial screen of DataPerfect]]&lt;br /&gt;
|[[File:DPE06_DataPerfect_change_directory.png|frame|none|Change to the data directory]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Open the data files===&lt;br /&gt;
: If you are in the correct directory you see the DataPerfect datasets within the folder. Use the cursor keys to select the correct data set and press enter.&lt;br /&gt;
[[File:DPE07_DataPerfect_select_DIAS.png|frame|none|Selecting the DIAS data set.]]&lt;br /&gt;
&lt;br /&gt;
=== Select the table to export ===&lt;br /&gt;
You can now see the tables within this database project. Select the table you want to export by using the up or down keys and pressing enter. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE08_DIAS_Overview.png|frame|none|The list of available tables.]]&lt;br /&gt;
|[[File:DPE09_DIAS_Table1.png|frame|none|The first entry in the first table of DIAS]]&lt;br /&gt;
|}&lt;br /&gt;
=== Navigate the Table ===&lt;br /&gt;
&#039;&#039;This these steps are not necessary for the export, but will be documented here anyway.&#039;&#039; &lt;br /&gt;
Here are important keys for navigating thought a table: &lt;br /&gt;
* &#039;&#039;&#039;Tab&#039;&#039;&#039; the next field is highlighted&lt;br /&gt;
* &#039;&#039;&#039;Down&#039;&#039;&#039; on a field which has references to entries in another table, that referenced entry is displayed&lt;br /&gt;
* &#039;&#039;&#039;Up&#039;&#039;&#039; The list of entries in this table where the content of the current field is displayed. Navigate though this list using the &#039;&#039;&#039;Up&#039;&#039;&#039; and &#039;&#039;&#039;Down&#039;&#039;&#039; keys. When typing characters this list the focus will jump to the entry whose unique key column is like the typed characters. For example in the table displayed in the image below, typing a number will focus on the entry with that id. The corresponding entry is automatically displayed. To edit this entry, press &#039;&#039;&#039;Enter&#039;&#039;&#039;. &lt;br /&gt;
* &#039;&#039;&#039;F7&#039;&#039;&#039; Goes to the next upper level in the hierarchy. For example if the list of entries is opened, it will jump back to the next upper level in the hierarchy. &lt;br /&gt;
[[File:DPE10_DIAS_Table1_browse.png|frame|none|Browsing through the first table of DIAS]]&lt;br /&gt;
&lt;br /&gt;
=== Select Report ===&lt;br /&gt;
From the list of available reports select the entry at the top: &#039;&#039;&#039;Build-In Short Reports&#039;&#039;&#039;.&lt;br /&gt;
[[File:DPE11_DIAS_Table1_Report_List.png|frame|none|The list of available reports.]]&lt;br /&gt;
&lt;br /&gt;
=== Set Export Properties ===&lt;br /&gt;
Set the export settings as shown in the first image below. Press the number of the property you want to change. For example, to change the file name of the output file, press &#039;&#039;&#039;2&#039;&#039;&#039; and the file options will appear, as can be seen in the second image. Press &#039;&#039;&#039;1&#039;&#039;&#039; to create a new file and enter the name of the file (image 3). &lt;br /&gt;
The filename of the export file must not be longer than 8 characters without file extension and the file extension itself (without the dot) must not be longer than 3 characters.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE12_DIAS_Table1_Export_1.png|frame|none|Export Settings Overview]]&lt;br /&gt;
|[[File:DPE13_DIAS_Table1_Export_2.png|frame|none|Changing the File Options]]&lt;br /&gt;
|[[File:DPE14_DIAS_Table1_Export_3.png|frame|none|Changing the File Name]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run Export ===&lt;br /&gt;
To start the export press &#039;&#039;&#039;Shift + F7&#039;&#039;&#039; again. The screen now shows a counter of how many elements from the table have already been exported. DOSBox starts with a limited CPU speed for the programs running in it. The speed can be increased by pressing &#039;&#039;&#039;Ctrl + F12&#039;&#039;&#039;. Increasing the speed to much, however creates a big overhead which will also result in a slower export. For some reason when increasing the speed the CPU load will jump from around 5% of one core to 100% within just 2-3 increase steps. So the CPU load should be watched when increasing the speed of DOSBox. On a DualCore 3 GHz Processor a speed of 50000-55000 cycles (can be seen in the title bar of the DOSBox Window) appears to be a good export speed without overhead.  &lt;br /&gt;
[[File:DPE15_DIAS_Export.png|frame|none|The export is running.]]&lt;br /&gt;
&lt;br /&gt;
After the export is done, you will see the list of available reports again. To step to the next higher level of the hierarchy press &#039;&#039;&#039;F7&#039;&#039;&#039;. Repeat this until you see the list of tables within this database project again. Now repeat the export process for all the other tables you want to export. &lt;br /&gt;
&lt;br /&gt;
=== Converting special characters ===&lt;br /&gt;
The best way to handle special characters is to know the character encoding by the original file system. If it is a DOS based system, the command &#039;&#039;&#039;CHCP&#039;&#039;&#039; will display what Character Code Page used. With this knowledge the file can be easily converted. In DOSBox the Command is &#039;&#039;&#039;KEYB&#039;&#039;&#039; however, it only helps if all of the special characters are displayed correctly within the DataPerfect. In the case of the Rohwer data set, the KEYB command showed Codepage 437, however Codepage 850 was actually used, must of the special characters are however identical between the two sets. &lt;br /&gt;
&lt;br /&gt;
Once the character encoding is known the exported file converted by a program that is able to read that encoding. Under Windows Notepad++ does a good job. After opening the file (the special characters are probably distorted), one must select the original character encoding as the encoding of the file and then convert the file to UTF-8. &lt;br /&gt;
&lt;br /&gt;
Google Refine is another software that is able to read the CP 850 encoding and allows for further processing of the files.&lt;br /&gt;
&lt;br /&gt;
Additional Infomation about Codepages can be found on the Wikipedia Article &#039;&#039;[http://en.wikipedia.org/wiki/Code_page Code page]&#039;&#039;. Also the article &#039;&#039;[http://www.joelonsoftware.com/articles/Unicode.html The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)]&#039;&#039; by Joel Spolsky is very helpful. &lt;br /&gt;
&lt;br /&gt;
In retrospective we now know that the Rohwer data set is encoded using the Codepage 850 (also called OEM 850), however some single characters are in the wrong encoding. This however is the result of the process where we parsed the file, got a list of all the different characters used and looked them up and converted them by hand. Though this process is a lot more work, but it works even in the case of mixed character sets. It is documented in detail below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== converting characters individually ====&lt;br /&gt;
The export out of DataPerfect has problems with special characters which are not converted correctly in a proper character set. Though all of the occurrences of such special characters can be replaced automatically, each of the character to be replaced has to be defined manually one. The files as they are generated by DataPerfect use the ANSI Character Encoding. This needs to be converted to UTF8. Under Windows the free program Notepad++ is very suited for this. When selecting the menu item &#039;&#039;&#039;Encoding&#039;&#039;&#039; (&#039;&#039;Kodierung&#039;&#039; in the image, because it is the German version of Notepad++), the entry &#039;&#039;ANSI&#039;&#039; should be marked as the current encoding. Now click on &#039;&#039;&#039;Convert to UTF-8&#039;&#039;&#039; and save the file. &lt;br /&gt;
[[File:DPE16 Notepad CharSet.png|frame|none|Converting the Character Set in Notepad++]]&lt;br /&gt;
The next step is to run the file through a program that converts the characters. The small Java program CharReplacer was written just to do that. There are two different files to that program: CharReplacer.class (the acutual program) and CharReplacer.settings (the settings file, which specifies, what characters to replace. The first line in &#039;&#039;CharReplacer.settings&#039;&#039; are all the characters which will not be replaced. All the following lines have the number value of the character which will be replaced, followed by a tab and the character it will be replaced with.&lt;br /&gt;
&lt;br /&gt;
 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&amp;quot;,.-; ()?\&#039;:/=&amp;amp;[]!`&amp;lt;&amp;gt;#+%&lt;br /&gt;
 8222	ä&lt;br /&gt;
 8221	ö&lt;br /&gt;
 129	ü&lt;br /&gt;
 225	ß&lt;br /&gt;
 381	Ä&lt;br /&gt;
 8482	Ö&lt;br /&gt;
 353	Ü&lt;br /&gt;
Excerpt from the &#039;&#039;CharReplacer.settings&#039;&#039; file.&lt;br /&gt;
 &lt;br /&gt;
To run the CharReplacer program, the Java Runtime Envirement (JRE) must be installed on a computer. It must be run via the command line interface (also known as console). &lt;br /&gt;
&lt;br /&gt;
Under Windows the Command Prompt (cmd.exe) can be used, but it needs to be adjusted to show the UTF-8 characters. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(The following steps displayed in italics only need to be done if the Windows Command Prompt is used.)&#039;&#039;&lt;br /&gt;
* Copy the files CharReplacer.class and CharReplacer.settings in the folder in which the exported files are (in the example from above it is C:\DOS\DP26Y\DIAS\)&lt;br /&gt;
* Start the console.&lt;br /&gt;
* Change to the directory in which the files are.&lt;br /&gt;
* &#039;&#039;Set the Font for the Command Prompt to &#039;&#039;&#039;Lucida Console&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Switch the Character Set for the console by typing &#039;&#039;&#039;chcp 65001&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* run the program by typing &#039;&#039;&#039;java -Dfile.encoding=UTF-8 CharReplacer&#039;&#039;&#039; followed by the name or names of the files you want to run the program on, e.g. &#039;&#039;java -Dfile.encoding=UTF-8 CharReplacer OUTPUT1.EXP&#039;&#039; and hit Enter.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE17 Console change Font.png|frame|none|Changing the Font in the Windows Command Prompt (German version)]]&lt;br /&gt;
|[[File:DPE18 Console start CharReplacer.png|frame|none|Running the CharReplacer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The output of the program will be a file with the name of the input file, but with an additional &#039;&#039;&#039;.csv&#039;&#039;&#039; extension at the end. So &#039;&#039;&#039;OUTPUT1.EXP&#039;&#039;&#039; will become &#039;&#039;&#039;OUTPUT1.EXP.csv&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the program find characters which are not in the list of allowed characters (the first line of the file) and for which no replacement rule exists, it will not replace this character, but it will show a message, informing the user that an unknown character was found, where it was found (file, line and column), what it looks like in UTF-8 and what its code is. If this occurs it is necessary to review the file at this position and create a new rule on how to handle that character. If the program prints out an unknown character, open the file and look at the given position. If the character is correct and represents precisely what was meant in the original dataset, then add this character at the end of the first line in the settings file. If it is a wrong character however, try to figure out what character it is meant to be. This could be derived from the context in which this unknown character appears. In the example below, the unknown character is displayed as &#039;&#039;&#039;†&#039;&#039;&#039; and appears in the work &#039;&#039;&#039;&amp;quot;R†dhusplassen&amp;quot;&#039;&#039;&#039;. People how are familiar with Norwegian might recognize the word as &#039;&#039;&#039;&amp;quot;Rådhusplassen&amp;quot;&#039;&#039;&#039; (the Norwegian word for &amp;quot;City Hall Place&amp;quot; or &amp;quot;Town Hall Place&amp;quot;). In other cased it could be not so clear. So it becomes necessary to look up the entry in the original DataPerfect table and see, what character was originally entered. In the third image, it can be seen that in this case the unknown character is indeed a &#039;&#039;&#039;å&#039;&#039;&#039;. So a new line can be added at the end of the settings file with the following content: &lt;br /&gt;
 8224	å&lt;br /&gt;
The 8224 is the code for the character, as shown in the message of the CharReplacer program in the first image. &lt;br /&gt;
&lt;br /&gt;
To edit the &#039;&#039;CharReplacer.settings&#039;&#039; file, use a regular text editor (like Notepad++ under Windows).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE19 Console run CharReplacer.png‎|frame|none|some unknown characters were found]]&lt;br /&gt;
|[[File:DPE20_Notepad_Special_Characters.png‎|frame|none|Viewing the unconverted character in Notepad++]]&lt;br /&gt;
|[[File:DPE21 DataPerfect Special Characters.png|frame|none|Viewing the unconverted character in the original data entry in DataPerfect.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Documenting Foreign Key Relations ===&lt;br /&gt;
When the data is exported out of DataPerfect the associations between the tables are lost. So it is important to take a look at the exported data and see the relation between the tables. What columns are unique keys for their table and what columns are foreign key links to other tables.&lt;br /&gt;
&lt;br /&gt;
=== Importing into a modern relational database ===&lt;br /&gt;
&lt;br /&gt;
=== Next Steps ===&lt;br /&gt;
&lt;br /&gt;
=== Alternative Ways of exporting data from a DataPerfect database ===&lt;br /&gt;
Another way of exporting DataPerfect files is the [http://dans-dp-lib.sourceforge.net/ DANS DataPerfect Library]. There is a reference implementation of a [http://dans-dp-lib.sourceforge.net/Dp2MySqlExport.java DP2MySQLConverter]. After testing it on small sample databases, it worked fine, but it ran intro problems exporting the DIAS database, causing huge and corrupt output files. For other DataPerfect files it could still be useful, especially since it already handles the special characters correctly.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=549</id>
		<title>Export DataPerfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=549"/>
		<updated>2012-03-19T17:07:42Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: /* Converting special characters */ simple automated conversion based on the known character encoding&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from a DataPerfect database, based on the Rohwer data set. &lt;br /&gt;
&lt;br /&gt;
Data Perfect is a DOS based database system. It&#039;s latest release is 2.6Y from June 2008. It can be downloaded via http://dataperfect.nl/ . &lt;br /&gt;
&lt;br /&gt;
=== Install and run DOSBox ===&lt;br /&gt;
: To run DataPerfect a DOS emulator is needed. The free emulator DOSBox works quite well. Go to http://www.dosbox.com/download.php?main=1 or http://sourceforge.net/projects/dosbox/, download the latest release and install it. For this articles DOSBox 0.74 will be used and installed under Windows 7. &lt;br /&gt;
&lt;br /&gt;
===  Download DataPerfect ===&lt;br /&gt;
: Go to http://dataperfect.nl/ and download the DataPerfect. Unzip the files into a specific folder. The folder used for this article is &#039;&#039;C:/DOS/DP26Y&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Copy your data files in the DataPerfect Folder===&lt;br /&gt;
: You can either copy them directly in the folder or create a subfolder for your data files and copy them in there. The data files for this article are located in the directory &#039;&#039;DIAS/&#039;&#039; within the DataPerfect folder.&lt;br /&gt;
&lt;br /&gt;
=== Start DOSBox===&lt;br /&gt;
: When starting DOSBox a second console window is opened. When running several instances of DOSBox these additional windows can bloat the window bar quite a bit. To avoid this just start the version &#039;&#039;DOXBox-0.74/Extras/DOSBox 0.74 (noconsole)&#039;&#039; from the Program Menu.&lt;br /&gt;
[[File:DPE01_DOSBox.png|frame|none|The DOSBOX Start Window]]&lt;br /&gt;
&lt;br /&gt;
=== Mount the DataPerfect Folder===&lt;br /&gt;
: After starting DOSBox the directory of the DataPerfect files needs to be mounted as a virtual drive. Type &#039;&#039;&#039;mount c C:\DOS\DP27Y&#039;&#039;&#039; to mount the folder and &#039;&#039;&#039;C:&#039;&#039;&#039; to change to the drive. &lt;br /&gt;
[[File:DPE02_DOSBox_mount.png|frame|none|Mounting the DataPerfect Folder]]&lt;br /&gt;
&lt;br /&gt;
=== Start DataPerfect===&lt;br /&gt;
: Start DataPerfect by typing &#039;&#039;&#039;DP26YU&#039;&#039;&#039; and pressing Enter.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE03_DataPerfect_start.png|frame|none|Switch to C: and start DataPerfect]]&lt;br /&gt;
|[[File:DPE04_DataPerfect_welcome.png|frame|none|The Welcome Screen of DataPerfect]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Change to the folder of your data files===&lt;br /&gt;
: If the data files are not in the directory of DataPerfect you need to change the directory. Press &#039;&#039;&#039;2&#039;&#039;&#039; to change the directory and type in the path to the directory of your data. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE05_DataPerfect_open.png|frame|none| The initial screen of DataPerfect]]&lt;br /&gt;
|[[File:DPE06_DataPerfect_change_directory.png|frame|none|Change to the data directory]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Open the data files===&lt;br /&gt;
: If you are in the correct directory you see the DataPerfect datasets within the folder. Use the cursor keys to select the correct data set and press enter.&lt;br /&gt;
[[File:DPE07_DataPerfect_select_DIAS.png|frame|none|Selecting the DIAS data set.]]&lt;br /&gt;
&lt;br /&gt;
=== Select the table to export ===&lt;br /&gt;
You can now see the tables within this database project. Select the table you want to export by using the up or down keys and pressing enter. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE08_DIAS_Overview.png|frame|none|The list of available tables.]]&lt;br /&gt;
|[[File:DPE09_DIAS_Table1.png|frame|none|The first entry in the first table of DIAS]]&lt;br /&gt;
|}&lt;br /&gt;
=== Navigate the Table ===&lt;br /&gt;
&#039;&#039;This these steps are not necessary for the export, but will be documented here anyway.&#039;&#039; &lt;br /&gt;
Here are important keys for navigating thought a table: &lt;br /&gt;
* &#039;&#039;&#039;Tab&#039;&#039;&#039; the next field is highlighted&lt;br /&gt;
* &#039;&#039;&#039;Down&#039;&#039;&#039; on a field which has references to entries in another table, that referenced entry is displayed&lt;br /&gt;
* &#039;&#039;&#039;Up&#039;&#039;&#039; The list of entries in this table where the content of the current field is displayed. Navigate though this list using the &#039;&#039;&#039;Up&#039;&#039;&#039; and &#039;&#039;&#039;Down&#039;&#039;&#039; keys. When typing characters this list the focus will jump to the entry whose unique key column is like the typed characters. For example in the table displayed in the image below, typing a number will focus on the entry with that id. The corresponding entry is automatically displayed. To edit this entry, press &#039;&#039;&#039;Enter&#039;&#039;&#039;. &lt;br /&gt;
* &#039;&#039;&#039;F7&#039;&#039;&#039; Goes to the next upper level in the hierarchy. For example if the list of entries is opened, it will jump back to the next upper level in the hierarchy. &lt;br /&gt;
[[File:DPE10_DIAS_Table1_browse.png|frame|none|Browsing through the first table of DIAS]]&lt;br /&gt;
&lt;br /&gt;
=== Select Report ===&lt;br /&gt;
From the list of available reports select the entry at the top: &#039;&#039;&#039;Build-In Short Reports&#039;&#039;&#039;.&lt;br /&gt;
[[File:DPE11_DIAS_Table1_Report_List.png|frame|none|The list of available reports.]]&lt;br /&gt;
&lt;br /&gt;
=== Set Export Properties ===&lt;br /&gt;
Set the export settings as shown in the first image below. Press the number of the property you want to change. For example, to change the file name of the output file, press &#039;&#039;&#039;2&#039;&#039;&#039; and the file options will appear, as can be seen in the second image. Press &#039;&#039;&#039;1&#039;&#039;&#039; to create a new file and enter the name of the file (image 3). &lt;br /&gt;
The filename of the export file must not be longer than 8 characters without file extension and the file extension itself (without the dot) must not be longer than 3 characters.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE12_DIAS_Table1_Export_1.png|frame|none|Export Settings Overview]]&lt;br /&gt;
|[[File:DPE13_DIAS_Table1_Export_2.png|frame|none|Changing the File Options]]&lt;br /&gt;
|[[File:DPE14_DIAS_Table1_Export_3.png|frame|none|Changing the File Name]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run Export ===&lt;br /&gt;
To start the export press &#039;&#039;&#039;Shift + F7&#039;&#039;&#039; again. The screen now shows a counter of how many elements from the table have already been exported. DOSBox starts with a limited CPU speed for the programs running in it. The speed can be increased by pressing &#039;&#039;&#039;Ctrl + F12&#039;&#039;&#039;. Increasing the speed to much, however creates a big overhead which will also result in a slower export. For some reason when increasing the speed the CPU load will jump from around 5% of one core to 100% within just 2-3 increase steps. So the CPU load should be watched when increasing the speed of DOSBox. On a DualCore 3 GHz Processor a speed of 50000-55000 cycles (can be seen in the title bar of the DOSBox Window) appears to be a good export speed without overhead.  &lt;br /&gt;
[[File:DPE15_DIAS_Export.png|frame|none|The export is running.]]&lt;br /&gt;
&lt;br /&gt;
After the export is done, you will see the list of available reports again. To step to the next higher level of the hierarchy press &#039;&#039;&#039;F7&#039;&#039;&#039;. Repeat this until you see the list of tables within this database project again. Now repeat the export process for all the other tables you want to export. &lt;br /&gt;
&lt;br /&gt;
=== Converting special characters ===&lt;br /&gt;
The best way to handle special characters is to know the character encoding by the original file system. If it is a DOS based system, the command &#039;&#039;&#039;CHCP&#039;&#039;&#039; will display what Character Code Page used. With this knowledge the file can be easily converted. In DOSBox the Command is &#039;&#039;&#039;KEYB&#039;&#039;&#039; however, it only helps if all of the special characters are displayed correctly within the DataPerfect. In the case of the Rohwer data set, the KEYB command showed Codepage 437, however Codepage 850 was actually used, must of the special characters are however identical between the two sets. &lt;br /&gt;
&lt;br /&gt;
Once the character encoding is known the exported file converted by a program that is able to read that encoding. Under Windows Notepad++ does a good job. After opening the file (the special characters are probably distorted), one must select the original character encoding as the encoding of the file and then convert the file to UTF-8. &lt;br /&gt;
&lt;br /&gt;
Google Refine is another software that is able to read the CP 850 encoding and allows for further processing of the files.&lt;br /&gt;
&lt;br /&gt;
Additional Infomation about Codepages can be found on the Wikipedia Article &#039;&#039;[http://en.wikipedia.org/wiki/Code_page Code page]&#039;&#039;. Also the article &#039;&#039;[http://www.joelonsoftware.com/articles/Unicode.html The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)]&#039;&#039; by Joel Spolsky is very helpful. &lt;br /&gt;
&lt;br /&gt;
In retrospective we now know that the Rohwer data set is encoded using the Codepage 850 (also called OEM 850), however some single characters are in the wrong encoding. This however is the result of the process where we parsed the file, got a list of all the different characters used and looked them up and converted them by hand. Though this process is a lot more work, but it works even in the case of mixed character sets. It is documented in detail below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== converting characters individually ====&lt;br /&gt;
The export out of DataPerfect has problems with special characters which are not converted correctly in a proper character set. Though all of the occurrences of such special characters can be replaced automatically, each of the character to be replaced has to be defined manually one. The files as they are generated by DataPerfect use the ANSI Character Encoding. This needs to be converted to UTF8. Under Windows the free program Notepad++ is very suited for this. When selecting the menu item &#039;&#039;&#039;Encoding&#039;&#039;&#039; (&#039;&#039;Kodierung&#039;&#039; in the image, because it is the German version of Notepad++), the entry &#039;&#039;ANSI&#039;&#039; should be marked as the current encoding. Now click on &#039;&#039;&#039;Convert to UTF-8&#039;&#039;&#039; and save the file. &lt;br /&gt;
[[File:DPE16 Notepad CharSet.png|frame|none|Converting the Character Set in Notepad++]]&lt;br /&gt;
The next step is to run the file through a program that converts the characters. The small Java program CharReplacer was written just to do that. There are two different files to that program: CharReplacer.class (the acutual program) and CharReplacer.settings (the settings file, which specifies, what characters to replace. The first line in &#039;&#039;CharReplacer.settings&#039;&#039; are all the characters which will not be replaced. All the following lines have the number value of the character which will be replaced, followed by a tab and the character it will be replaced with.&lt;br /&gt;
&lt;br /&gt;
 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&amp;quot;,.-; ()?\&#039;:/=&amp;amp;[]!`&amp;lt;&amp;gt;#+%&lt;br /&gt;
 8222	ä&lt;br /&gt;
 8221	ö&lt;br /&gt;
 129	ü&lt;br /&gt;
 225	ß&lt;br /&gt;
 381	Ä&lt;br /&gt;
 8482	Ö&lt;br /&gt;
 353	Ü&lt;br /&gt;
Excerpt from the &#039;&#039;CharReplacer.settings&#039;&#039; file.&lt;br /&gt;
 &lt;br /&gt;
To run the CharReplacer program, the Java Runtime Envirement (JRE) must be installed on a computer. It must be run via the command line interface (also known as console). &lt;br /&gt;
&lt;br /&gt;
Under Windows the Command Prompt (cmd.exe) can be used, but it needs to be adjusted to show the UTF-8 characters. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(The following steps displayed in italics only need to be done if the Windows Command Prompt is used.)&#039;&#039;&lt;br /&gt;
* Copy the files CharReplacer.class and CharReplacer.settings in the folder in which the exported files are (in the example from above it is C:\DOS\DP26Y\DIAS\)&lt;br /&gt;
* Start the console.&lt;br /&gt;
* Change to the directory in which the files are.&lt;br /&gt;
* &#039;&#039;Set the Font for the Command Prompt to &#039;&#039;&#039;Lucida Console&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Switch the Character Set for the console by typing &#039;&#039;&#039;chcp 65001&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* run the program by typing &#039;&#039;&#039;java -Dfile.encoding=UTF-8 CharReplacer&#039;&#039;&#039; followed by the name or names of the files you want to run the program on, e.g. &#039;&#039;java -Dfile.encoding=UTF-8 CharReplacer OUTPUT1.EXP&#039;&#039; and hit Enter.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE17 Console change Font.png|frame|none|Changing the Font in the Windows Command Prompt (German version)]]&lt;br /&gt;
|[[File:DPE18 Console start CharReplacer.png|frame|none|Running the CharReplacer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The output of the program will be a file with the name of the input file, but with an additional &#039;&#039;&#039;.csv&#039;&#039;&#039; extension at the end. So &#039;&#039;&#039;OUTPUT1.EXP&#039;&#039;&#039; will become &#039;&#039;&#039;OUTPUT1.EXP.csv&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the program find characters which are not in the list of allowed characters (the first line of the file) and for which no replacement rule exists, it will not replace this character, but it will show a message, informing the user that an unknown character was found, where it was found (file, line and column), what it looks like in UTF-8 and what its code is. If this occurs it is necessary to review the file at this position and create a new rule on how to handle that character. If the program prints out an unknown character, open the file and look at the given position. If the character is correct and represents precisely what was meant in the original dataset, then add this character at the end of the first line in the settings file. If it is a wrong character however, try to figure out what character it is meant to be. This could be derived from the context in which this unknown character appears. In the example below, the unknown character is displayed as &#039;&#039;&#039;†&#039;&#039;&#039; and appears in the work &#039;&#039;&#039;&amp;quot;R†dhusplassen&amp;quot;&#039;&#039;&#039;. People how are familiar with Norwegian might recognize the word as &#039;&#039;&#039;&amp;quot;Rådhusplassen&amp;quot;&#039;&#039;&#039; (the Norwegian word for &amp;quot;City Hall Place&amp;quot; or &amp;quot;Town Hall Place&amp;quot;). In other cased it could be not so clear. So it becomes necessary to look up the entry in the original DataPerfect table and see, what character was originally entered. In the third image, it can be seen that in this case the unknown character is indeed a &#039;&#039;&#039;å&#039;&#039;&#039;. So a new line can be added at the end of the settings file with the following content: &lt;br /&gt;
 8224	å&lt;br /&gt;
The 8224 is the code for the character, as shown in the message of the CharReplacer program in the first image. &lt;br /&gt;
&lt;br /&gt;
To edit the &#039;&#039;CharReplacer.settings&#039;&#039; file, use a regular text editor (like Notepad++ under Windows).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE19 Console run CharReplacer.png‎|frame|none|some unknown characters were found]]&lt;br /&gt;
|[[File:DPE20_Notepad_Special_Characters.png‎|frame|none|Viewing the unconverted character in Notepad++]]&lt;br /&gt;
|[[File:DPE21 DataPerfect Special Characters.png|frame|none|Viewing the unconverted character in the original data entry in DataPerfect.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Documenting Foreign Key Relations ===&lt;br /&gt;
&lt;br /&gt;
=== Importing into a modern relational database ===&lt;br /&gt;
&lt;br /&gt;
=== Next Steps ===&lt;br /&gt;
&lt;br /&gt;
=== Alternative Ways of exporting data from a DataPerfect database ===&lt;br /&gt;
Another way of exporting DataPerfect files is the [http://dans-dp-lib.sourceforge.net/ DANS DataPerfect Library]. There is a reference implementation of a [http://dans-dp-lib.sourceforge.net/Dp2MySqlExport.java DP2MySQLConverter]. After testing it on small sample databases, it worked fine, but it ran intro problems exporting the DIAS database, causing huge and corrupt output files. For other DataPerfect files it could still be useful, especially since it already handles the special characters correctly.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=548</id>
		<title>Export DataPerfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=548"/>
		<updated>2012-03-07T15:06:44Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: special characters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from a DataPerfect database, based on the Rohwer data set. &lt;br /&gt;
&lt;br /&gt;
Data Perfect is a DOS based database system. It&#039;s latest release is 2.6Y from June 2008. It can be downloaded via http://dataperfect.nl/ . &lt;br /&gt;
&lt;br /&gt;
=== Install and run DOSBox ===&lt;br /&gt;
: To run DataPerfect a DOS emulator is needed. The free emulator DOSBox works quite well. Go to http://www.dosbox.com/download.php?main=1 or http://sourceforge.net/projects/dosbox/, download the latest release and install it. For this articles DOSBox 0.74 will be used and installed under Windows 7. &lt;br /&gt;
&lt;br /&gt;
===  Download DataPerfect ===&lt;br /&gt;
: Go to http://dataperfect.nl/ and download the DataPerfect. Unzip the files into a specific folder. The folder used for this article is &#039;&#039;C:/DOS/DP26Y&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Copy your data files in the DataPerfect Folder===&lt;br /&gt;
: You can either copy them directly in the folder or create a subfolder for your data files and copy them in there. The data files for this article are located in the directory &#039;&#039;DIAS/&#039;&#039; within the DataPerfect folder.&lt;br /&gt;
&lt;br /&gt;
=== Start DOSBox===&lt;br /&gt;
: When starting DOSBox a second console window is opened. When running several instances of DOSBox these additional windows can bloat the window bar quite a bit. To avoid this just start the version &#039;&#039;DOXBox-0.74/Extras/DOSBox 0.74 (noconsole)&#039;&#039; from the Program Menu.&lt;br /&gt;
[[File:DPE01_DOSBox.png|frame|none|The DOSBOX Start Window]]&lt;br /&gt;
&lt;br /&gt;
=== Mount the DataPerfect Folder===&lt;br /&gt;
: After starting DOSBox the directory of the DataPerfect files needs to be mounted as a virtual drive. Type &#039;&#039;&#039;mount c C:\DOS\DP27Y&#039;&#039;&#039; to mount the folder and &#039;&#039;&#039;C:&#039;&#039;&#039; to change to the drive. &lt;br /&gt;
[[File:DPE02_DOSBox_mount.png|frame|none|Mounting the DataPerfect Folder]]&lt;br /&gt;
&lt;br /&gt;
=== Start DataPerfect===&lt;br /&gt;
: Start DataPerfect by typing &#039;&#039;&#039;DP26YU&#039;&#039;&#039; and pressing Enter.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE03_DataPerfect_start.png|frame|none|Switch to C: and start DataPerfect]]&lt;br /&gt;
|[[File:DPE04_DataPerfect_welcome.png|frame|none|The Welcome Screen of DataPerfect]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Change to the folder of your data files===&lt;br /&gt;
: If the data files are not in the directory of DataPerfect you need to change the directory. Press &#039;&#039;&#039;2&#039;&#039;&#039; to change the directory and type in the path to the directory of your data. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE05_DataPerfect_open.png|frame|none| The initial screen of DataPerfect]]&lt;br /&gt;
|[[File:DPE06_DataPerfect_change_directory.png|frame|none|Change to the data directory]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Open the data files===&lt;br /&gt;
: If you are in the correct directory you see the DataPerfect datasets within the folder. Use the cursor keys to select the correct data set and press enter.&lt;br /&gt;
[[File:DPE07_DataPerfect_select_DIAS.png|frame|none|Selecting the DIAS data set.]]&lt;br /&gt;
&lt;br /&gt;
=== Select the table to export ===&lt;br /&gt;
You can now see the tables within this database project. Select the table you want to export by using the up or down keys and pressing enter. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE08_DIAS_Overview.png|frame|none|The list of available tables.]]&lt;br /&gt;
|[[File:DPE09_DIAS_Table1.png|frame|none|The first entry in the first table of DIAS]]&lt;br /&gt;
|}&lt;br /&gt;
=== Navigate the Table ===&lt;br /&gt;
&#039;&#039;This these steps are not necessary for the export, but will be documented here anyway.&#039;&#039; &lt;br /&gt;
Here are important keys for navigating thought a table: &lt;br /&gt;
* &#039;&#039;&#039;Tab&#039;&#039;&#039; the next field is highlighted&lt;br /&gt;
* &#039;&#039;&#039;Down&#039;&#039;&#039; on a field which has references to entries in another table, that referenced entry is displayed&lt;br /&gt;
* &#039;&#039;&#039;Up&#039;&#039;&#039; The list of entries in this table where the content of the current field is displayed. Navigate though this list using the &#039;&#039;&#039;Up&#039;&#039;&#039; and &#039;&#039;&#039;Down&#039;&#039;&#039; keys. When typing characters this list the focus will jump to the entry whose unique key column is like the typed characters. For example in the table displayed in the image below, typing a number will focus on the entry with that id. The corresponding entry is automatically displayed. To edit this entry, press &#039;&#039;&#039;Enter&#039;&#039;&#039;. &lt;br /&gt;
* &#039;&#039;&#039;F7&#039;&#039;&#039; Goes to the next upper level in the hierarchy. For example if the list of entries is opened, it will jump back to the next upper level in the hierarchy. &lt;br /&gt;
[[File:DPE10_DIAS_Table1_browse.png|frame|none|Browsing through the first table of DIAS]]&lt;br /&gt;
&lt;br /&gt;
=== Select Report ===&lt;br /&gt;
From the list of available reports select the entry at the top: &#039;&#039;&#039;Build-In Short Reports&#039;&#039;&#039;.&lt;br /&gt;
[[File:DPE11_DIAS_Table1_Report_List.png|frame|none|The list of available reports.]]&lt;br /&gt;
&lt;br /&gt;
=== Set Export Properties ===&lt;br /&gt;
Set the export settings as shown in the first image below. Press the number of the property you want to change. For example, to change the file name of the output file, press &#039;&#039;&#039;2&#039;&#039;&#039; and the file options will appear, as can be seen in the second image. Press &#039;&#039;&#039;1&#039;&#039;&#039; to create a new file and enter the name of the file (image 3). &lt;br /&gt;
The filename of the export file must not be longer than 8 characters without file extension and the file extension itself (without the dot) must not be longer than 3 characters.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE12_DIAS_Table1_Export_1.png|frame|none|Export Settings Overview]]&lt;br /&gt;
|[[File:DPE13_DIAS_Table1_Export_2.png|frame|none|Changing the File Options]]&lt;br /&gt;
|[[File:DPE14_DIAS_Table1_Export_3.png|frame|none|Changing the File Name]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run Export ===&lt;br /&gt;
To start the export press &#039;&#039;&#039;Shift + F7&#039;&#039;&#039; again. The screen now shows a counter of how many elements from the table have already been exported. DOSBox starts with a limited CPU speed for the programs running in it. The speed can be increased by pressing &#039;&#039;&#039;Ctrl + F12&#039;&#039;&#039;. Increasing the speed to much, however creates a big overhead which will also result in a slower export. For some reason when increasing the speed the CPU load will jump from around 5% of one core to 100% within just 2-3 increase steps. So the CPU load should be watched when increasing the speed of DOSBox. On a DualCore 3 GHz Processor a speed of 50000-55000 cycles (can be seen in the title bar of the DOSBox Window) appears to be a good export speed without overhead.  &lt;br /&gt;
[[File:DPE15_DIAS_Export.png|frame|none|The export is running.]]&lt;br /&gt;
&lt;br /&gt;
After the export is done, you will see the list of available reports again. To step to the next higher level of the hierarchy press &#039;&#039;&#039;F7&#039;&#039;&#039;. Repeat this until you see the list of tables within this database project again. Now repeat the export process for all the other tables you want to export. &lt;br /&gt;
&lt;br /&gt;
=== Converting special characters ===&lt;br /&gt;
The export out of DataPerfect has problems with special characters which are not converted correctly in a proper character set. Though all of the occurrences of such special characters can be replaced automatically, each of the character to be replaced has to be defined manually one. The files as they are generated by DataPerfect use the ANSI Character Encoding. This needs to be converted to UTF8. Under Windows the free program Notepad++ is very suited for this. When selecting the menu item &#039;&#039;&#039;Encoding&#039;&#039;&#039; (&#039;&#039;Kodierung&#039;&#039; in the image, because it is the German version of Notepad++), the entry &#039;&#039;ANSI&#039;&#039; should be marked as the current encoding. Now click on &#039;&#039;&#039;Convert to UTF-8&#039;&#039;&#039; and save the file. &lt;br /&gt;
[[File:DPE16 Notepad CharSet.png|frame|none|Converting the Character Set in Notepad++]]&lt;br /&gt;
The next step is to run the file through a program that converts the characters. The small Java program CharReplacer was written just to do that. There are two different files to that program: CharReplacer.class (the acutual program) and CharReplacer.settings (the settings file, which specifies, what characters to replace. The first line in &#039;&#039;CharReplacer.settings&#039;&#039; are all the characters which will not be replaced. All the following lines have the number value of the character which will be replaced, followed by a tab and the character it will be replaced with.&lt;br /&gt;
&lt;br /&gt;
 abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789&amp;quot;,.-; ()?\&#039;:/=&amp;amp;[]!`&amp;lt;&amp;gt;#+%&lt;br /&gt;
 8222	ä&lt;br /&gt;
 8221	ö&lt;br /&gt;
 129	ü&lt;br /&gt;
 225	ß&lt;br /&gt;
 381	Ä&lt;br /&gt;
 8482	Ö&lt;br /&gt;
 353	Ü&lt;br /&gt;
Excerpt from the &#039;&#039;CharReplacer.settings&#039;&#039; file.&lt;br /&gt;
 &lt;br /&gt;
To run the CharReplacer program, the Java Runtime Envirement (JRE) must be installed on a computer. It must be run via the command line interface (also known as console). &lt;br /&gt;
&lt;br /&gt;
Under Windows the Command Prompt (cmd.exe) can be used, but it needs to be adjusted to show the UTF-8 characters. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(The following steps displayed in italics only need to be done if the Windows Command Prompt is used.)&#039;&#039;&lt;br /&gt;
* Copy the files CharReplacer.class and CharReplacer.settings in the folder in which the exported files are (in the example from above it is C:\DOS\DP26Y\DIAS\)&lt;br /&gt;
* Start the console.&lt;br /&gt;
* Change to the directory in which the files are.&lt;br /&gt;
* &#039;&#039;Set the Font for the Command Prompt to &#039;&#039;&#039;Lucida Console&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;Switch the Character Set for the console by typing &#039;&#039;&#039;chcp 65001&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* run the program by typing &#039;&#039;&#039;java -Dfile.encoding=UTF-8 CharReplacer&#039;&#039;&#039; followed by the name or names of the files you want to run the program on, e.g. &#039;&#039;java -Dfile.encoding=UTF-8 CharReplacer OUTPUT1.EXP&#039;&#039; and hit Enter.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE17 Console change Font.png|frame|none|Changing the Font in the Windows Command Prompt (German version)]]&lt;br /&gt;
|[[File:DPE18 Console start CharReplacer.png|frame|none|Running the CharReplacer]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The output of the program will be a file with the name of the input file, but with an additional &#039;&#039;&#039;.csv&#039;&#039;&#039; extension at the end. So &#039;&#039;&#039;OUTPUT1.EXP&#039;&#039;&#039; will become &#039;&#039;&#039;OUTPUT1.EXP.csv&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the program find characters which are not in the list of allowed characters (the first line of the file) and for which no replacement rule exists, it will not replace this character, but it will show a message, informing the user that an unknown character was found, where it was found (file, line and column), what it looks like in UTF-8 and what its code is. If this occurs it is necessary to review the file at this position and create a new rule on how to handle that character. If the program prints out an unknown character, open the file and look at the given position. If the character is correct and represents precisely what was meant in the original dataset, then add this character at the end of the first line in the settings file. If it is a wrong character however, try to figure out what character it is meant to be. This could be derived from the context in which this unknown character appears. In the example below, the unknown character is displayed as &#039;&#039;&#039;†&#039;&#039;&#039; and appears in the work &#039;&#039;&#039;&amp;quot;R†dhusplassen&amp;quot;&#039;&#039;&#039;. People how are familiar with Norwegian might recognize the word as &#039;&#039;&#039;&amp;quot;Rådhusplassen&amp;quot;&#039;&#039;&#039; (the Norwegian word for &amp;quot;City Hall Place&amp;quot; or &amp;quot;Town Hall Place&amp;quot;). In other cased it could be not so clear. So it becomes necessary to look up the entry in the original DataPerfect table and see, what character was originally entered. In the third image, it can be seen that in this case the unknown character is indeed a &#039;&#039;&#039;å&#039;&#039;&#039;. So a new line can be added at the end of the settings file with the following content: &lt;br /&gt;
 8224	å&lt;br /&gt;
The 8224 is the code for the character, as shown in the message of the CharReplacer program in the first image. &lt;br /&gt;
&lt;br /&gt;
To edit the &#039;&#039;CharReplacer.settings&#039;&#039; file, use a regular text editor (like Notepad++ under Windows).&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE19 Console run CharReplacer.png‎|frame|none|some unknown characters were found]]&lt;br /&gt;
|[[File:DPE20_Notepad_Special_Characters.png‎|frame|none|Viewing the unconverted character in Notepad++]]&lt;br /&gt;
|[[File:DPE21 DataPerfect Special Characters.png|frame|none|Viewing the unconverted character in the original data entry in DataPerfect.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Documenting Foreign Key Relations ===&lt;br /&gt;
&lt;br /&gt;
=== Importing into a modern relational database ===&lt;br /&gt;
&lt;br /&gt;
=== Next Steps ===&lt;br /&gt;
&lt;br /&gt;
=== Alternative Ways of exporting data from a DataPerfect database ===&lt;br /&gt;
Another way of exporting DataPerfect files is the [http://dans-dp-lib.sourceforge.net/ DANS DataPerfect Library]. There is a reference implementation of a [http://dans-dp-lib.sourceforge.net/Dp2MySqlExport.java DP2MySQLConverter]. After testing it on small sample databases, it worked fine, but it ran intro problems exporting the DIAS database, causing huge and corrupt output files. For other DataPerfect files it could still be useful, especially since it already handles the special characters correctly.&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=547</id>
		<title>Export DataPerfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=547"/>
		<updated>2012-03-06T11:15:30Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: additional information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from a DataPerfect database, based on the Rohwer data set. &lt;br /&gt;
&lt;br /&gt;
Data Perfect is a DOS based database system. It&#039;s latest release is 2.6Y from June 2008. It can be downloaded via http://dataperfect.nl/ . &lt;br /&gt;
&lt;br /&gt;
=== Install and run DOSBox ===&lt;br /&gt;
: To run DataPerfect a DOS emulator is needed. The free emulator DOSBox works quite well. Go to http://www.dosbox.com/download.php?main=1 or http://sourceforge.net/projects/dosbox/, download the latest release and install it. For this articles DOSBox 0.74 will be used and installed under Windows 7. &lt;br /&gt;
&lt;br /&gt;
===  Download DataPerfect ===&lt;br /&gt;
: Go to http://dataperfect.nl/ and download the DataPerfect. Unzip the files into a specific folder. The folder used for this article is &#039;&#039;C:/DOS/DP26Y&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Copy your data files in the DataPerfect Folder===&lt;br /&gt;
: You can either copy them directly in the folder or create a subfolder for your data files and copy them in there. The data files for this article are located in the directory &#039;&#039;DIAS/&#039;&#039; within the DataPerfect folder.&lt;br /&gt;
&lt;br /&gt;
=== Start DOSBox===&lt;br /&gt;
: When starting DOSBox a second console window is opened. When running several instances of DOSBox these additional windows can bloat the window bar quite a bit. To avoid this just start the version &#039;&#039;DOXBox-0.74/Extras/DOSBox 0.74 (noconsole)&#039;&#039; from the Program Menu.&lt;br /&gt;
[[File:DPE01_DOSBox.png|frame|none|The DOSBOX Start Window]]&lt;br /&gt;
&lt;br /&gt;
=== Mount the DataPerfect Folder===&lt;br /&gt;
: After starting DOSBox the directory of the DataPerfect files needs to be mounted as a virtual drive. Type &#039;&#039;&#039;mount c C:\DOS\DP27Y&#039;&#039;&#039; to mount the folder and &#039;&#039;&#039;C:&#039;&#039;&#039; to change to the drive. &lt;br /&gt;
[[File:DPE02_DOSBox_mount.png|frame|none|Mounting the DataPerfect Folder]]&lt;br /&gt;
&lt;br /&gt;
=== Start DataPerfect===&lt;br /&gt;
: Start DataPerfect by typing &#039;&#039;&#039;DP26YU&#039;&#039;&#039; and pressing Enter.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE03_DataPerfect_start.png|frame|none|Switch to C: and start DataPerfect]]&lt;br /&gt;
|[[File:DPE04_DataPerfect_welcome.png|frame|none|The Welcome Screen of DataPerfect]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Change to the folder of your data files===&lt;br /&gt;
: If the data files are not in the directory of DataPerfect you need to change the directory. Press &#039;&#039;&#039;2&#039;&#039;&#039; to change the directory and type in the path to the directory of your data. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE05_DataPerfect_open.png|frame|none| The initial screen of DataPerfect]]&lt;br /&gt;
|[[File:DPE06_DataPerfect_change_directory.png|frame|none|Change to the data directory]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Open the data files===&lt;br /&gt;
: If you are in the correct directory you see the DataPerfect datasets within the folder. Use the cursor keys to select the correct data set and press enter.&lt;br /&gt;
[[File:DPE07_DataPerfect_select_DIAS.png|frame|none|Selecting the DIAS data set.]]&lt;br /&gt;
&lt;br /&gt;
=== Select the table to export ===&lt;br /&gt;
You can now see the tables within this database project. Select the table you want to export by using the up or down keys and pressing enter. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE08_DIAS_Overview.png|frame|none|The list of available tables.]]&lt;br /&gt;
|[[File:DPE09_DIAS_Table1.png|frame|none|The first entry in the first table of DIAS]]&lt;br /&gt;
|}&lt;br /&gt;
=== Navigate the Table ===&lt;br /&gt;
&#039;&#039;This these steps are not necessary for the export, but will be documented here anyway.&#039;&#039; &lt;br /&gt;
Here are important keys for navigating thought a table: &lt;br /&gt;
* &#039;&#039;&#039;Tab&#039;&#039;&#039; the next field is highlighted&lt;br /&gt;
* &#039;&#039;&#039;Down&#039;&#039;&#039; on a field which has references to entries in another table, that referenced entry is displayed&lt;br /&gt;
* &#039;&#039;&#039;Up&#039;&#039;&#039; The list of entries in this table where the content of the current field is displayed. Navigate though this list using the &#039;&#039;&#039;Up&#039;&#039;&#039; and &#039;&#039;&#039;Down&#039;&#039;&#039; keys. When typing characters this list the focus will jump to the entry whose unique key column is like the typed characters. For example in the table displayed in the image below, typing a number will focus on the entry with that id. The corresponding entry is automatically displayed. To edit this entry, press &#039;&#039;&#039;Enter&#039;&#039;&#039;. &lt;br /&gt;
* &#039;&#039;&#039;F7&#039;&#039;&#039; Goes to the next upper level in the hierarchy. For example if the list of entries is opened, it will jump back to the   &lt;br /&gt;
[[File:DPE10_DIAS_Table1_browse.png|frame|none|Browsing through the first table of DIAS]]&lt;br /&gt;
&lt;br /&gt;
=== Select Report ===&lt;br /&gt;
[[File:DPE11_DIAS_Table1_Report_List.png|frame|none|The list of available reports.]]&lt;br /&gt;
&lt;br /&gt;
=== Set Export Properties ===&lt;br /&gt;
Set the export settings as shown in the first image below. Press the number of the property you want to change. For example, to change the file name of the output file, press &#039;&#039;&#039;2&#039;&#039;&#039; and the file options will appear, as can be seen in the second image. Press &#039;&#039;&#039;1&#039;&#039;&#039; to create a new file and enter the name of the file (image 3). &lt;br /&gt;
The filename of the export file must not be longer than 8 characters without file extension and the file extension itself (without the dot) must not be longer than 3 characters.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE12_DIAS_Table1_Export_1.png|frame|none|Export Settings Overview]]&lt;br /&gt;
|[[File:DPE13_DIAS_Table1_Export_2.png|frame|none|Changing the File Options]]&lt;br /&gt;
|[[File:DPE14_DIAS_Table1_Export_3.png|frame|none|Changing the File Name]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Run Export ===&lt;br /&gt;
To start the export press &#039;&#039;&#039;Shift + F7&#039;&#039;&#039; again. The screen now shows a counter of how many elements from the table have already been exported. DOSBox starts with a limited CPU speed for the programs running in it. The speed can be increased by pressing &#039;&#039;&#039;Ctrl + F12&#039;&#039;&#039;. Increasing the speed to much, however creates a big overhead which will also result in a slower export. For some reason when increasing the speed the CPU load will jump from around 5% of one core to 100% within just 2-3 increase steps. So the CPU load should be watched when increasing the speed of DOSBox. On a DualCore 3 GHz Processor a speed of 50000-55000 cycles (can be seen in the title bar of the DOSBox Window) appears to be a good export speed without overhead.  &lt;br /&gt;
[[File:DPE15_DIAS_Export.png|frame|none|The export is running.]]&lt;br /&gt;
&lt;br /&gt;
After the export is done, you will see the list of available reports again. To step to the next higher level of the hierarchy press &#039;&#039;&#039;F7&#039;&#039;&#039;. Repeat this until you see the list of tables within this database project again. Now repeat the export process for all the other tables you want to export. &lt;br /&gt;
&lt;br /&gt;
=== Converting special characters ===&lt;br /&gt;
&lt;br /&gt;
=== Documenting Foreign Key Relations ===&lt;br /&gt;
&lt;br /&gt;
=== Importing into a modern relational database ===&lt;br /&gt;
&lt;br /&gt;
=== Next Steps ===&lt;br /&gt;
&lt;br /&gt;
=== Alternative Ways of exporting data from a DataPerfect database ===&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=546</id>
		<title>Export DataPerfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=546"/>
		<updated>2012-03-06T09:57:14Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: images added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from a DataPerfect database, based on the Rohwer data set. &lt;br /&gt;
&lt;br /&gt;
Data Perfect is a DOS based database system. It&#039;s latest release is 2.6Y from June 2008. It can be downloaded via http://dataperfect.nl/ . &lt;br /&gt;
&lt;br /&gt;
=== 1. Install and run DOSBox ===&lt;br /&gt;
: To run DataPerfect a DOS emulator is needed. The free emulator DOSBox works quite well. Go to http://www.dosbox.com/download.php?main=1 or http://sourceforge.net/projects/dosbox/, download the latest release and install it. For this articles DOSBox 0.74 will be used and installed under Windows 7. &lt;br /&gt;
&lt;br /&gt;
=== 2. Download DataPerfect ===&lt;br /&gt;
: Go to http://dataperfect.nl/ and download the DataPerfect. Unzip the files into a specific folder. The folder used for this article is &#039;&#039;C:/DOS/DP26Y&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
===3. Copy your data files in the DataPerfect Folder===&lt;br /&gt;
: You can either copy them directly in the folder or create a subfolder for your data files and copy them in there. The data files for this article are located in the directory &#039;&#039;DIAS/&#039;&#039; within the DataPerfect folder.&lt;br /&gt;
&lt;br /&gt;
===4. Start DOSBox===&lt;br /&gt;
: When starting DOSBox a second console window is opened. When running several instances of DOSBox these additional windows can bloat the window bar quite a bit. To avoid this just start the version &#039;&#039;DOXBox-0.74/Extras/DOSBox 0.74 (noconsole)&#039;&#039; from the Program Menu.&lt;br /&gt;
[[File:DPE01_DOSBox.png|frame|none|The DOSBOX Start Window]]&lt;br /&gt;
&lt;br /&gt;
===5. Mount the DataPerfect Folder===&lt;br /&gt;
: After starting DOSBox the directory of the DataPerfect files needs to be mounted as a virtual drive. Type &#039;&#039;&#039;mount c C:\DOS\DP27Y&#039;&#039;&#039; to mount the folder and &#039;&#039;&#039;C:&#039;&#039;&#039; to change to the drive. &lt;br /&gt;
[[File:DPE02_DOSBox_mount.png|frame|none|Mounting the DataPerfect Folder]]&lt;br /&gt;
&lt;br /&gt;
===5. Start DataPerfect===&lt;br /&gt;
: Start DataPerfect by typing &#039;&#039;&#039;DP26YU&#039;&#039;&#039; and pressing Enter.&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE03_DataPerfect_start.png|frame|none|Switch to C: and start DataPerfect]]&lt;br /&gt;
|[[File:DPE04_DataPerfect_welcome.png|frame|none|The Welcome Screen of DataPerfect]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===6. Change to the folder of your data files===&lt;br /&gt;
: If the data files are not in the directory of DataPerfect you need to change the directory. Press &#039;&#039;&#039;2&#039;&#039;&#039; to change the directory and type in the path to the directory of your data. &lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE05_DataPerfect_open.png|frame|none| The initial screen of DataPerfect]]&lt;br /&gt;
|[[File:DPE06_DataPerfect_change_directory.png|frame|none|Change to the data directory]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===7. Open the data files===&lt;br /&gt;
: If you are in the correct directory you see the DataPerfect datasets within the folder. Use the cursor keys to select the correct data set and press enter.&lt;br /&gt;
[[File:DPE07_DataPerfect_select_DIAS.png|frame|none|Selecting the DIAS data set.]]&lt;br /&gt;
&lt;br /&gt;
===8. Select the table to export===&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE08_DIAS_Overview.png|frame|none|The list of available tables.]]&lt;br /&gt;
|[[File:DPE09_DIAS_Table1.png|frame|none|The first entry in the first table of DIAS]]&lt;br /&gt;
|}&lt;br /&gt;
===9. (Navigate the Table===&lt;br /&gt;
[[File:DPE10_DIAS_Table1_browse.png|frame|none|Browsing through the first table of DIAS]]&lt;br /&gt;
&lt;br /&gt;
===10. Select Report===&lt;br /&gt;
[[File:DPE11_DIAS_Table1_Report_List.png|frame|none|The list of available reports.]]&lt;br /&gt;
&lt;br /&gt;
===11. Set Export Properties===&lt;br /&gt;
{|&lt;br /&gt;
|[[File:DPE12_DIAS_Table1_Export_1.png|frame|none|Export Settings Overview]]&lt;br /&gt;
|[[File:DPE13_DIAS_Table1_Export_2.png|frame|none|Changing the File Options]]&lt;br /&gt;
|[[File:DPE14_DIAS_Table1_Export_3.png|frame|none|Changing the File Name]]&lt;br /&gt;
|}&lt;br /&gt;
===12. Run Export===&lt;br /&gt;
[[File:DPE15_DIAS_Export.png|frame|none|The export is running.]]&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
	<entry>
		<id>https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=545</id>
		<title>Export DataPerfect</title>
		<link rel="alternate" type="text/html" href="https://wiki.bgbm.org/rebind_documentation/index.php?title=Export_DataPerfect&amp;diff=545"/>
		<updated>2012-03-05T17:31:08Z</updated>

		<summary type="html">&lt;p&gt;DavidFichtmueller: first steps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to export data from a DataPerfect database, based on the Rohwer data set. &lt;br /&gt;
&lt;br /&gt;
Data Perfect is a DOS based database system. It&#039;s latest release is 2.6Y from June 2008. It can be downloaded via http://dataperfect.nl/ . &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Install and run DOSBox&#039;&#039;&#039;&lt;br /&gt;
: To run DataPerfect a DOS emulator is needed. The free emulator DOSBox works quite well. Go to http://www.dosbox.com/download.php?main=1 or http://sourceforge.net/projects/dosbox/, download the latest release and install it. For this articles DOSBox 0.74 will be used and installed under windows.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Download DataPerfect&#039;&#039;&#039;&lt;br /&gt;
: Go to http://dataperfect.nl/ and download the DataPerfect. Unzip the files into a specific folder. The folder used for this article is &#039;&#039;C:/DOS/DP26Y&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Copy your data files in the DataPerfect Folder&#039;&#039;&#039;&lt;br /&gt;
: You can either copy them directly in the folder or create a subfolder for your data files and copy them in there. The data files for this article are located in the directory &#039;&#039;DIAS/&#039;&#039; within the DataPerfect folder.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4. Start DOSBox&#039;&#039;&#039;&lt;br /&gt;
: When starting DOSBox a second console window is opened. When running several instances of DOSBox these additional windows can bloat the window bar quite a bit. To avoid this just start the version &#039;&#039;DOXBox-0.74/Extras/DOSBox 0.74 (noconsole)&#039;&#039; from the Program Menu.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Mount the DataPerfect Folder.&#039;&#039;&#039;&lt;br /&gt;
: After starting DOSBox the directory of the DataPerfect files needs to be mounted as a virtual drive. Type &#039;&#039;&#039;mount c C:\DOS\DP27Y&#039;&#039;&#039; to mount the folder and &#039;&#039;&#039;C:&#039;&#039;&#039; to change to the drive. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;5. Start DataPerfect&#039;&#039;&#039;&lt;br /&gt;
: Start DataPerfect by typing &#039;&#039;&#039;DP26YU&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;6. Change to the folder of your data files&#039;&#039;&#039;&lt;br /&gt;
: If the data files are not in the directory of DataPerfect you need to change the directory. Press &#039;&#039;&#039;2&#039;&#039;&#039; to change the directory and type in the path to the directory of your data. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;7. Open the data files&#039;&#039;&#039; &lt;br /&gt;
: If you are in the correct directory you see the DataPerfect datasets within the folder. Use the cursor keys to select the correct data set and press enter.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;8. Select the table to export.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;9. (Navigate the Table)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;10. Select Report&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;11. Set Export Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;12. Run Export&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>DavidFichtmueller</name></author>
	</entry>
</feed>