Kapitel 7. Tellico weiter entwickeln und programmieren

Tellico ist freie Software, daher ist erwünscht, dass Sie das Programm weiterentwickeln und verbessern. Es ist relativ einfach, Skripte für den Import oder Export zu schreiben oder um Daten zu verändern. In diesem Kapitel finden Sie dazu viele Informationen.

Dateiformat

Tellico benutzt als Datendatei ein Zip-Archiv, normalerweise mit der Dateierweiterung .tc. In diesem Archiv befindet sich im obersten Ordner die Datei tellico.xml. Bilder können im Ordner images/ im Archiv sein oder direkt als Base64-kodiert in den XML-Daten enthalten sein. Bilder können außerdem noch im Datenordner des Programms gespeichert werden, dann fehlen sie in der Datendatei. Tellico kann die XML-Datei unkomprimiert laden.

XML-Daten

Sammlung

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tellico PUBLIC "-//Robby Stephenson/DTD Tellico V11.0//EN" "http://periapsis.org/tellico/dtd/v11/tellico.dtd">
<tellico xmlns="http://periapsis.org/tellico/" syntaxVersion="11">
 <collection title="My Books" type="2">
 </collection>
</tellico>

Die Datei beginnt mit der erforderlichen XML-Deklaration und Kodierung, gefolgt vom DOCTYPE. Wenn ein Feldtypen oder zusätzliche Eigenschaften für die Standardfelder hinzugefügt werden, wird die Versionsnummer der DOCTYPE-DTD erhöht. Tellico kann alle vorherigen DTD-Versionen öffnen und lesen, speichert aber immer in der neuesten Version. Der Speicherort der DTD verweist immer auf die aktuelle DTD.

Das oberste Element ist ein <tellico>-Element, das den Standard-Namensbereich und die Syntaxversion enthält, die immer zur DTD passen sollte.

Das <tellico>-Element enthält ein <collection>-Element. Weitere <collection>-Elemente werden zurzeit ignoriert. Das Attribut title enthält den Titel der Sammlung. Das Attribut type bestimmt, welche Art von Einträgen in der Sammlung vorhanden sind. Die erlaubten Typen werden in einem späteren Abschnitt aufgezählt. Das optionale Attribut entryTitle kann benutzt werden, um den Titel der Einträge für eine benutzerdefinierte Sammlung anzugeben, der Titel sollte im Plural eingeben werden.

Felder

  <fields>
   <field flags="8" title="Title" category="General" format="1" type="1" name="title" />
   <field flags="7" title="Author" category="General" format="2" type="1" name="author" />
   <field flags="2" title="Binding" category="General" allowed="Hardback;Paperback;Trade Paperback;E-Book;Magazine;Journal" format="4" type="3" name="binding" >
    <prop name="default"
>Paperback</prop>
   </field>
   <field flags="6" title="Publisher" category="Publishing" format="0" type="1" name="publisher" />
   <field flags="4" title="Edition" category="Publishing" format="0" type="1" name="edition" />
   <field flags="3" title="Copyright Year" category="Publishing" format="4" type="6" name="cr_year" />
   <field flags="2" title="Publication Year" category="Publishing" format="4" type="6" name="pub_year" />
   <field flags="0" title="ISBN#" category="Publishing" format="4" type="1" name="isbn" description="International Standard Book Number" />
   <field flags="7" title="Genre" category="Classification" format="0" type="1" name="genre" />
   <field flags="7" title="Keywords" category="Classification" format="0" type="1" name="keyword" />
   <field flags="0" title="Front Cover" category="Front Cover" format="4" type="10" name="cover" />
   <field flags="0" title="Comments" category="Personal" format="4" type="1" name="comments" />
   <field title="Rating" flags="2" category="Personal" format="4" type="14" name="rating">
    <prop name="maximum"
>5</prop>
    <prop name="minimum"
>1</prop>
   </field>
   <field title="ID" flags="32" category="Personal" format="4" type="6" name="id">
    <prop name="template"
>%{@id}</prop>
   </field>

  </fields>

Alle Felder werden innerhalb eines Elements <fields> definiert, das nur einmal vorkommen darf. Alle Informationen über ein Feld mit Ausnahme der Eigenschaften werden als Attribute des Elements <fields> eingefügt. Die erlaubten Werte für die Attribute flags, format und type werden im nächsten Abschnitt angegeben.

Mit Eigenschaften von Feldern können Voreinstellung der Feldwerte, Wertebereiche für die Bewertung, abgeleitete Wertvorlagen usw. festgelegt werden. Das Beispiel oben enthält einen Standardwert, einen Maximum für eine Bewertung und eine Vorlage für ein angeleitetes ID-Feld.

Einträge

  <entry>
   <title
>C++ Programming Language, The</title>
   <authors>
    <author
>Stroustrup, Bjarne</author>
   </authors>
   <publisher
>Addison-Wesley Pub Co</publisher>
   <edition
>3rd</edition>
   <pub_year
>1997</pub_year>
   <isbn
>0-201-88954-4</isbn>
   <genres>
    <genre
>Non-Fiction</genre>
   </genres>
   <keywords>
    <keyword
>Programming</keyword>
    <keyword
>Computers</keyword>
   </keywords>
   <cover
>cf65a2f023b6cb9e9233323dca10ac7c.jpeg</cover>
  </entry>

Für jedes Feld einer Sammlung kann das Element <entry> ein Element mit der gleichen Bezeichnung wie der Name des Feldes enthalten. Wenn mehrere Werte für das Feld erlaubt sind, dann wird der Buchstabe s an den Feldnamen angefügt,um ein Element zu erstellen. Jeder neue Wert wird als untergeordnetes Element eingefügt, wie bei den Feldern Autor, Gattung und Schlüsselwort im vorher genannten Beispiel.

Daraus folgt, dass die Datendatei nach dem Einfügen zusätzlicher Felder zur Sammlung nicht mehr der DTD entspricht. Tellico benutzt jedoch ein XML-Parser, der die Gültigkeit nicht überprüft, daher gibt es keine Probleme mit zusätzlichen Feldern,

Bilder

  <images>
   <image width="111" format="JPEG" height="140" id="cf65a2f023b6cb9e9233323dca10ac7c.jpeg" />
  </images>

Innerhalb des Elements <images> wird jedes Bild mit Attributen für die Bildgröße durch einen Eintrag zur Verknüpfung aufgelistet. Ist das Bild in der Zip-Datei enthalten, ist dieses Element leer. Ansonsten können die Bilddaten im XML-Datenstrom als Text in Base64-Kodierung eingefügt werden.