Chapitre 7. Bidouiller Tellico

Dans l'esprit du logiciel libre, vous êtes les bienvenues pour bidouiller Tellico comme vous le souhaitez. Vous devriez pouvoir écrire des scripts pour importer, exporter ou modifier les données très facilement. Ce chapitre vous donne plus d'informations sur ce qu'il est possible de faire.

Format de fichier

Le fichier de données par défaut de Tellico est une archive zip, avec normalement l'extension .tc. À l'intérieur de cette archive se trouve un fichier tellico.xml. Des images peuvent être incluses dans le dossier images/ de l'archive ou directement dans les données XML, encodées en base64. Il est possible que les images soient enregistrées dans le dossier de données de l'application, auquel cas, elles ne seront pas présente dans le fichier de données. Tellico peut aussi charger un fichier XML, seul et non compressé.

Donnés XML

Collection

<?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>

Le fichier commence par la déclaration et l'encodage XML requis, suivi du doctype. Quand un nouveau type de champ est ajouté ou que des propriétés additionnelles sont définies sur les champs par défaut, la version du doctype DTD est incrémentée. Tellico peut toujours ouvrir et lire n'importe quelles versions DTD précédentes, mais enregistrera les fichiers dans la version courante. L'emplacement DTD pointe vers un véritable fichier DTD.

L'élément de haut niveau est un élément <tellico>, contenant la déclaration de l'espace de nom par défaut et la version de syntaxe du fichier qui doit toujours correspondre au DTD.

L'élément <tellico> contient un élément <collection>. Les collections multiples ne sont pas abordées, pour l'instant. L'attribut title contient le titre de la collection, tandis que le type spécifie quelles sortes d'entrées sont contenues dans la collection. Les types autorisés sont listés ultérieurement. Un attribut optionnel entryTitle peut être utilisé pour spécifier le titre des entrées pour une collection personnalisée, et doit être au pluriel.

Champs

  <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>

Tous les champs sont définis dans un élément <fields> unique. Toutes les informations pour un champ, à l'exception des propriétés étendues, sont incluses comme attributs de l'élément de <field>. Les valeurs autorisées pour flags, format, et type sont données dans la section suivante.

Les propriétés des champs sont utilisées pour définir les valeurs par défaut des champs (plage de notation, modèle de valeur dérivée, etc.). L'exemple ci-dessus inclut une valeur par défaut, une notation maximale et un modèle pour un champ ID dérivé.

Entrées

  <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>

Pour chaque champ de la collection, une <entrée> peut contenir un élément dont le nom est identique au nom d'un champ. Si plusieurs valeurs sont permises pour le champ, la lettre s est ensuite ajoutée au nom de champ pour créer un élément et chaque valeur est ajoutée comme un enfant de l'élément, comme dans le cas des champs author (auteur), genre et keyword (mot clé) ci-dessus.

Il en résulte que si des champs additionnels sont ajoutés à la collection, le fichier de données ne sera plus conforme au fichier DTD. Cependant, Tellico utilise un analyseur syntaxique XML non valable, les champs additionnels ne poseront donc aucun problème.

Images

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

Dans l'élément <images>, chaque image référencée par une entrée est listée, avec des attributs décrivant la taille de l'image, le format et l'identifiant. Si l'image est contenue dans le fichier « zip », l'élément est vide. Sinon, l'image peut être ajoutée au flux XML, sous forme de texte et encodée en base64.