Indice
Nello spirito del software libero chiunque è autorizzato a modificare Tellico come e quanto vuole. Non dovrebbe essere difficile scrivere script per importare, esportare o modificare i dati. Questo capitolo fornisce ulteriori informazioni su come farlo.
Il file dati tipico di Tellico è un archivio zip e di norma ha estensione .tc
. Nell'archivio si trova un file guida tellico.xml
. Le immagini possono stare nella cartella images/
dell'archivio o essere incluse direttamente nel file XML, codificate come base64. Le immagini possono essere anche salvate nella cartella dell'applicazione e in questo caso non saranno affatto incluse nel file dati. Tellico può anche caricare il solo file XML non compresso.
<?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>
Il file inizia con le necessarie dichiarazioni e codifiche XML, seguite dal tipo di documento. Quando un nuovo tipo di campo viene aggiunto o viene impostata una nuova proprietà per i campi predefiniti la versione di "doctype DTD" viene incrementata. Tellico sarà sempre in grado di leggere file di versioni DTD successive, ma salverà sempre i file nella versione corrente. Il percorso DTD deve puntare ad un file DTD esistente.
L'elemento top-level è del tipo <tellico>. Esso contiene la dichiarazione namespace predefinita e la versione di sintassi del file, che deve sempre corrispondere al DTD.
L'elemento <tellico> contiene l'elemento <collection>. Al momento più collezioni sono ignorate. L'attributo title contiene il titolo della collezione mentre type specifica quali tipi di elementi vi sono contenuti. I tipi di campo disponibili sono elencati successivamente. Un attributo opzionale entryTitle può essere usato per specificare il titolo degli elementi in una collezione personalizzata. Il nome dovrebbe essere al plurale.
<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>
Tutti i campi sono definiti entro un unico elemento <fields>. Tutte le informazioni su uno specifico campo, tranne le sue proprietà, sono incluse come attributi dell'elemento <field>. I valori ammessi per gli attributi flags, format, e type sono elencati in una successiva sezione.
Le proprietà dei campi sono utilizzate per definire i loro valori predefiniti, le valutazioni possibili, i modelli per i valori derivati, etc. Gli esempi seguenti mostrano come assegnare un valore predefinito, un massimo per le valutazioni e un modello per un campo ID derivato.
<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>
Per ogni campo nella collezione, <entry> dovrebbe contenere un elemento il cui nome è identico al nome del campo. Se sono stati impostati valori multipli per quel campo allora la lettera s viene aggiunta al nome del campo per creare l'elemento, e ogni valore è aggiunto come un "child" di quell'elemento, come nel caso dei campi author, genre e keyword qui sopra.
Come risultato se vengono aggiunti campi alla collezione il file dati non sarà più conforme al DTD. Tuttavia Tellico utilizza un parser XML di tipo non-validating, quindi i campi addizionali non dovrebbero causare problemi.
<images> <image width="111" format="JPEG" height="140" id="cf65a2f023b6cb9e9233323dca10ac7c.jpeg" /> </images>
All'interno dell'elemento <images> vengono elencate tutte le immagini collegate ad un oggetto con gli attributi che ne descrivono le dimensioni e il suo ID. Se l'immagine è contenuta in un file zip l'elemento è vuoto. Altrimenti l'immagine può essere inserita nel file XML codificandola come testo base64.