Список слов представляет из себя набор записей, каждая из которых в общем случае может иметь следующий вид:

<List>
    ...
    <article id="899101">
        <wl-name>the Underground</wl-name>
    </article>
    <Level sort="1" type="normal" depth="1">
        <article id="32167">
            <wl-name>the Underground</wl-name>  <!-- ключ сортировки (sortkey) -->
            <wl-name>underground</wl-name>      <!-- заголовок (show) -->
            <alt-name>subway</alt-name>         <!-- альтернативный поисковый ключ -->
            <img url="icon.png" />                <!-- иконка для отображения в списке -->
            <sound url="subway.spx" />            <!-- звуковой файл, привязанный к заголовку -->
            <scene_3d url="some_3d_scene" />
            <video url="some_video.mp4" />
            <id shift="15">32167</id>           <!-- id статьи с текстом перевода -->
        </article>
        ...
        <article id="8675309">
            <wl-name>Reveal</wl-name>
            <id>8675309</id>                    <!-- id записей в другом списке, для формирования выборок -->
            <id>101111</id>
        </article>
        <Level depth="2">
            ...
        </Level>
    </Level>
</List>
  • <article> – запись списка слов. Обычно это некий элемент который ссылается на текст статьи (в этом случае его можно считать заголовком) или на другие элементы (в другом словарном списке) – эта привязка осуществляется за счет значения вложенных тегов <id>. Если же после тега <article> идет тег <Level>, группирующий вложенные статьи в папку (описан ниже), то <article> является заголовком этой папки. При этом папка тоже может иметь перевод (открывается на планшете/десктопе по одиночному нажатию; а по двойному – список вложенных элементов), а может не иметь (как в примере). Это более частый вариант, потому что в приложениях для телефонов на экране показывается только список слов без окна перевода. При нажатии на папку есть неопределенность, что открыть: список вложенных элементов или связанную с папкой статью. Разрешением подобной неопределенности обычно занимается логика приложения в рамках конкретного проекта.
    Значение атрибута “id” (он же list entry id) при этом является уникальной в пределах словаря меткой, по которой можно строить взаимосвязи между записями
  • <wl-name> – один из связанных с записью смысловых элементов (вариантов написания). Если мы хотим дать краткую характеристику статье (для отображения списка), то необходимо добавить один <wl-name> – сам заголовок. Иногда может добавляться дополнительно часть речи или вещи, влияющие на:
    • расположение этой статьи в списке (ключ для сортировки, который может отличаться от заголовка);
    • поведение при нажатии на заголовок, чтобы открывать статью не сначала, а сразу скроллить в нужное место;

Поскольку<wl-name>-ов у записи может быть несколько, то важно, чтобы у всех записей списка их было одинаковое количество (нужно добавлять пустые <wl-name> там, где значение для данной статьи неизвестно). wl-name может содержать как обычный текст, так и стилизованный (если нужно настроить размер и цвет шрифта, добавить курсив и т.п) – подробнее про это можно почитать в тематической статье

  • <id> – вложенный в <article> тег <id> служит для создания взаимосвязей, смысл которых основан на типе списка.
    Например, <id> у записи в списке с типом Dictionary есть идентификатор текста-перевода (т.к. сам список Dictionary посвящен переводам); если таких тегов несколько – у заголовка есть несколько разных статей с переводом. Если запись с несколькими <id> находится в списке с типом “FullTextSearch_Headwords”, то она символизирует одно слово, которое мы можем поискать среди заголовков словаря. При этом все его <id> – это идентификаторы записей в других списках, в которых это слово встречается (см.подробнее – в разделе про полнотекстовый поиск). Аналогично (несколько <id> из других списков) может настраиваться линковка записей и не для полнотекстового поиска – (смысл при этом остается схожим – “слово X из списка 1, ссылается на слова Y и Z из списка 2 и слово K из списка 3”)
  • Атрибут “shift” – deprecated. Изначально хранил смещение от начала статьи, которое нужно применить при загрузке; единицы измерения смещения интерпретировались на основе ShiftType в FTS настройках списка. Сейчас такой функционал реализуется через метки <label> в тексте статьи и варианте написания.
  • <Level> – позволяет группировать вложенные в него записи. Теги можно вкладывать друг в друга и чередовать с обычными статьями, создавая дерево каталогов
    • “depth” содержит значение глубины вложенных в эту папку узлов. Т.е. самый верхний уровень списка можно считать имеющим depth=0, папки верхнего уровня имеют depth=1, вложенные в них – 2 и так далее. Разработчик должен самостоятельно следить за тем, чтобы значение атрибута у вложенных папок увеличивалось
    • “sort” указывает, нужно ли при сборке базы отсортировать статьи внутри этого уровня. Возможные значения – “1” или “y”
    • “type” содержит тип поведения папки при первом отображении – будет она обычной папкой (текст с иконкой, содержимое не видно) или сразу при отрисовке списка нужно видеть содержимое и т.п. Все возможные варианты можно посмотреть здесь.
  • <alt-name> – альтернативный заголовок слова; по тексту этого варианта можно будет найти нужную запись, но он не будет отображаться в самом словарном индексе. Поиск будет успешен только в случае ввода полного alt-name’a; по частичному совпадению (например, началу текста) подмотки не будет. Самих тегов <alt-name> у статьи может быть несколько – тогда она будет искаться по любому из них
  • <img> – картинка, которую нужно отображать у записи в списке. Используется как для добавления иконок в словарях и разговорниках, так и для создания внешних баз картинок, которые состоят из заголовков-ключей и связанных с ними изображений. В процессе работы приложение заранее узнает ключ-заголовок и по нему вытаскивает картинку для своих нужд. Список поддерживаемых форматов – в описании метаданных-картинок
    Единственный атрибут “url” содержит имя файла добавляемой картинки. Путь к папке, в которой нужно искать файлы, настраивается в списке слов. При этом и само имя файла тоже может содержать путь – это позволяет вместо одной папки с десятками тысяч файлов сделать корневую папку и дать ссылку на нее в настройках списка в sproj , а внутри этой папки создать иерархию подпапок с файлами (и путь к каждому файлу прописывать в <img url=”…” />)
  • <sound> – звуковой файл, который проигрывается по нажатию на иконку рядом с заголовком. По аналогии с картинками, звуки иногда встраиваются в саму базу, а иногда создаются отдельные базы “ключ->звук”. Список поддерживаемых форматов – в описании метаданных про звуки
    Атрибут “url” здесь работает так же, как и в случае с<img> (описано выше). При этом при добавлении звука часто есть необходимость предварительно его обработать (а не добавлять .wav as is). Детально предобработка и разметка звуков разобрана здесь

If you have found a spelling error, please, notify us by selecting that text and pressing Ctrl+Enter.