Розділ 7. Додаткове налаштування Tellico

У дусі вільного програмного забезпечення, автори програми вітатимуть будь-яке ваше намагання удосконалити Tellico у будь-який спосіб. Писати скрипти для імпорту, експорту або зміни даних програми дуже просто. У цій главі наведено відомості, потрібні для розуміння способів та наслідків внесення цих змін.

Формат файлів

Типовий файл даних Tellico є архівом zip, назва якого, зазвичай, завершується суфіксом .tc. Всередині архіву не верхньому рівні перебуває файл tellico.xml. Зображення може бути включено до каталогу images/ архіву, крім того, зображення може бути безпосередньо включено до даних XML у кодуванні base64. Зображення також може бути збережено у каталозі даних програми, у цьому випадку у файлі даних їх не буде зовсім. Tellico також може завантажувати файл XML у нестиснутому вигляді.

Дані XML

Збірка

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

Вміст файла починається з обов’язкового оголошення XML і визначення кодування, за яким має бути вказано тип документа. Після додавання нових полів або додаткових властивостей до типових полів номер версії типу документів DTD збільшується. Програма Tellico зможе відкрити і прочитати будь-яку з попередніх версій DTD, але зберігатиме файли лише у форматі поточної версії. Адреса DTD не вказує на справжній файл DTD.

Елементом найвищого рівня є елемент <tellico>, цей елемент містить типове оголошення простору назв і версії синтаксису файла, ця версія завжди має збігатися з версією DTD.

Елемент <tellico> містить один елемент <collection>. У поточній версії програми кратне визначення збірок (collection) не буде враховано. Атрибут title містить заголовок збірки, а атрибут type визначає тип записів, які містяться у збірці. Список можливих типів наведено у наступному розділі. Можна використовувати необов’язковий атрибут entryTitle для визначення заголовка записів у нетиповій збірці, його значення слід вказувати у множині.

Поля

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

Всі поля визначаються всередині елемента <fields>, цей елемент не можна вказувати декілька разів. Всі дані для поля (field), окрім властивостей, має бути включено як атрибути до елемента <field>. Можливі значення для атрибутів flags, format і type наведено у наступному розділі.

Властивості полів використовуються для встановлення типових значень полів, діапазонів значень оцінок, визначення шаблонів похідних значень тощо. У наведених вище прикладах визначено типове значення, максимальне значення діапазону та шаблон для похідного поля ідентифікатора.

Записи

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

Для кожного з полів збірки <entry> може містити елемент, чия назва є ідентичною назві поля. Якщо для відповідного поля можна використовувати декілька значень, для створення елемента з декількома значеннями до назви поля слід додати літеру s, кожне зі значень додається як дочірній елемент, як у випадку полів автора, жанру і ключових слів у прикладі, наведеному вище.

В результаті до збірки буде включено додаткові поля, файл даних вже не відповідатиме DTD. Але у Tellico використовується інструмент обробки XML без перевірки коректності, отже додаткові поля не спричинятимуть проблем.

Зображення

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

Всередині елемента <images> має бути перелічено як записи кожного з зображень, разом з атрибутами, які описують розміри зображення, його формат і ідентифікатор. Якщо зображення міститься всередині файла архіву Zip, елемент має бути порожнім. Крім того, дані зображення може бути вміщено у контейнер XML як закодований у форматі base64 текст.