Пользовательский интерфейс словаря и разметка

В этой главе описываются пользовательский интерфейс для Dictionary Services и определяет элементы и атрибуты, которые Вы используете для повышения в цене содержания словаря. Схема словаря приспосабливает RELAX определению NG (http://www .relaxng.org/). Вы определяете структуру словаря путем повышения содержания с помощью тегов XHTML и тегов, определяющихся Dictionary Services.

Пользовательский интерфейс словаря

Словари являются полезными ссылками, служащими многим целям. Самым типичным является для пользователей к поиску значение слова на определенном языке. Однако, можно создать содержание для тезауруса, двуязычные словари (такой столь же англо-японский), внутренние глоссарии и профессиональные словари (такой как законный, медицинский, и технический). OS X включает приложение Словаря для обеспечения пользователей цифровым доступом к содержанию, связывающемуся согласно инструкциям, предоставленным в этой книге.

Рисунок 1-1 показывает, что запись из словаря MyDictionary для слова делает. Словарь MyDictionary создавался с помощью Комплекта разработчика Словаря. Поскольку Вы читаете остальную часть этой главы, Вы будете видеть, как к тексту разметки с помощью XHTML для создания записи, произношения, определений, примеров использования, фраз, и т.д. которые появляются в этом числе.

Рисунок 1-1  словарная статья
A dictionary entry

Словарная статья не ограничивается текстом. Можно включать другие ресурсы, такие как изображения (см. рисунок 1-2), фильмы, звуки и гиперссылки к веб-страницам.

Рисунок 1-2  словарная статья, выводящая на экран изображение
A dictionary entry that displays an imageA dictionary entry that displays an image

Можно структурировать словарь для уважения пользовательских настроек родительского контроля. (Родительский контроль установлен в Установках системы пользователями администратора для ограниченных пользователей.) При помощи надлежащего тега, как Вы будете видеть далее в этой главе, можно подавить записи или определенные части записи. Рисунок 1-3 показывает ту же запись, показанную на рисунке 1-1, но, как видится пользователь, которому включили родительский контроль. Часть фраз записи отмечена с тегом родительского контроля, подавляющим его дисплей.

  Родительский контроль рисунка 1-3 может подавить фразы
Parental controls can suppress phrases

Вы можете также записи разметки с тегами приоритета для управления глубиной информации, которую это показано. Рисунок 1-4 показывает ту же запись как рисунок 1-1, но на сей раз оба родительского контроля и приоритетные настройки подавляют содержание. Предложения использования, показанные на рисунке 1-1, тегируются с приоритетом, устанавливающим, который заставляет их не быть выведенными на экран на рисунке 1-4.

  Настройки Priority рисунка 1-4 и родительский контроль ограничивают запись
Priority settings and parental controls limit an entry

В дополнение к использованию приложения Словаря пользователи могут получить доступ к словарным статьям из приложения щелкающим по управлению выделенным текстом. Затем в контекстном меню, появляющемся, пользователь может выбрать Look Up in Dictionary, как показано на рисунке 1-5.

Рисунок 1-5  команда поиска по словарю в контекстном меню
The dictionary look-up command in the contextual menu

Окно Dictionary открывается для показа результатов поиска выделенного текста в активных словарях. Посмотрите рисунок 1-6.

  Окно Figure 1-6 The Dictionary
The Dictionary window

Разметка словаря

Вы определяете структуру словаря путем повышения его содержания с элементами разметки XHTML and Dictionary Services (элементы, атрибуты, обработки инструкций, комментариев, и т.д).

Разметка служб словаря

Этот раздел определяет элементы разметки, которые являются определенными для Dictionary Services. Пространство имен по умолчанию относится к XHTML. Префикс пространства имен d идентифицирует элементы и атрибуты, которые являются определенными для Dictionary Services.

Содержание словаря

%dic.content определяет элемент, который может использоваться в различных местах.

Это %Flow.mix; поскольку XHTML делает. Flow.mix тег включает все текстовое содержание, блок и встроенные элементы.

<!ENTITY % dic.content
    "( #PCDATA | %Flow.mix; )*"
>
 
<!-- %Flow.mix; includes all text content, block and inline -->
<!ENTITY % Flow.mix
    "%Heading.class;
    | %List.class;
    | %Block.class;
    | %Inline.class;
    %Misc.class;"
>

Корневой элемент словаря

d:dictionary определяет корневой элемент словаря, содержащего одну или более записей.

<!ELEMENT d:dictionary ( d:entry+ ) >

Запись

d:entry содержит один или несколько индексов и часть тела, и создает логическую структуру словарной статьи.

<!ELEMENT d:entry ( d:index+, %dic.content;) >
<!ATTLIST d:entry
    id                    ID        #REQUIRED
    d:title            NMTOKEN    #REQUIRED
    d:parental-control    ( 1 )        #IMPLIED
>

Атрибуты:

  • id ID записи. Значение должно быть уникальным в словаре.

  • d:title Заголовок является текстом, представляющим запись. Это должно представлять запись или быть канонической формой записи. Можно использовать этот текст в качестве заголовка окна, выводящего на экран запись. Можно также использовать его для заполнения поля искомого текста приложения Словаря.

  • d:parental-control Уровень родительского контроля указывает ограниченную часть записи. Значение этого атрибута должно быть «1». Когда функция родительского контроля активна, записи, имеющие этот атрибут, не ищутся и не появляются в списке результата поиска.

Индекс

d:index определяет информацию, чтобы извлечь из записи и использовать для создания индекса. Индексный элемент должен появиться до других элементов в записи.

 
<!ELEMENT d:index EMPTY >
<!ATTLIST    d:index
    d:value    NMTOKEN    #REQUIRED
    d:title    NMTOKEN    #REQUIRED
    d:parental-control    NMTOKEN    #IMPLIED
    d:anchor    NMTOKEN    #IMPLIED
    d:yomi    NMTOKEN    #IMPLIED
>

Атрибуты:

  • d:value Текст ключа поиска для записи.

  • d:title Текст, выведенный на экран в списке результата поиска. Это может использоваться в качестве заголовка окна, выводящего на экран запись.

  • d:parental-control Удаляет заголовок из списка результата поиска. Посмотрите Родительский контроль и Приоритет.

  • d:anchor Выделяет определенную часть в записи, такой как объяснение идиоматической фразы.

  • d:yomi Используемый только для японских словарей.

Например, следующие записи для «делают», указывает, что поиск с помощью или делает, делает, или составленный возврат завещания делает в результате.

<d:index d:value="make"  d:title="make"/>
<d:index d:value="makes" d:title="makes"/>
<d:index d:value="made"  d:title="made"/>
<d:index d:value="make it" d:title="make it" d:parental-control="1" d:anchor="xpointer(//*[@id='make_it'])"/>

Gaiji

d:gi определяет символы, которые не доступны в Unicode или для которого платформа не имеет данных глифа. Можно также использовать этот элемент для указания шрифта, содержащего специальные символы. Используйте gi элемент как встроенный элемент.

<!ENTITY % inline.extra "| d:gi">
<!ELEMENT d:gi (#PCDATA) >
<!ATTLIST    d:gi
    d:set             NMTOKEN    #IMPLIED
    d:name            NMTOKEN    #IMPLIED
    d:ps-font-name    NMTOKEN    #IMPLIED
>

Атрибуты:

  • d:set Глиф определил имя. Только один поддерживается, «AdobeJapan1».

  • d:name Число CID (Символьный Идентификатор)

  • d:ps-font-name Имя шрифта PostScript.

Например:

<d:gi d:set="AdobeJapan1" d:name="6930">邉</d:gi>  # One of the character variants
<d:gi d:ps-font-name="Webdings">&#xF06A;</d:gi>   # Airplane symbol

Выделение

Можно выделить часть записи с помощью d:anchor атрибут d:index тег. Значение d:anchor должно быть выражение XPath, указывающее блок в записи в выделение. id то, что Вы предоставляете, должно быть уникальным.

Например, d:anchor атрибут в следующем:

<d:entry id="make_1" d:title="make">
    ...
<d:index d:value="make it" d:parental-control="1" d:anchor="xpointer(//*[@id='make_it'])"/>

заставляет эту часть записи быть выделенной:

<div id="make_it"><b>make it</b> : succeed in something; survive.</div>

Родительский контроль и приоритет

d:parental-control идентифицирует содержание, которое не должно быть показано для пользователей, которым включили родительский контроль. (Родительский контроль включен в Установках системы.)

<!ATTLIST div d:parental-control NUMBER #IMPLIED >
<!ATTLIST span d:parental-control NUMBER #IMPLIED >
<!ATTLIST entry d:parental-control NUMBER #IMPLIED >
<!ATTLIST d:index d:parental-control NUMBER #IMPLIED >

Значение всегда 1.

d:entry тег может иметь этот атрибут. Записи, имеющие этот атрибут, не появляются в списке результата поиска.

d:priority скрывает часть содержания для обеспечения более краткого содержания. Это обычно используется для результатов, выведенных на экран в окне Dictionary.

<!ATTLIST div d:priority NUMBER #IMPLIED >
<!ATTLIST span d:priority NUMBER #IMPLIED >

Значение может быть в диапазоне 0 к 9, включительно. Содержание, имеющее приоритетное значение, больше, чем 1 не выведен на экран в окне Dictionary. Поведение определяется только для 0 и 2. Все другие значения резервируются для будущего использования.

Dictionary Services применяет соблюдающие правила к содержанию с d:parental-control и d:priority теги. (Обратите внимание на то, что эти правила являются частью RELAX определение NG.)

  • Если Вы не указываете родительский контроль или тег приоритета для элемента, значение, как предполагается, 0.

  • Элемент, не имеющий родительского контроля или тега приоритета, наследовал значение своего родительского элемента.

  • Дочерний элемент может иметь родительский контроль или тег приоритета, значение которого равно или больше, чем значение того из его родителя. Если дочерний элемент имеет родительский контроль или тег приоритета, значение которого меньше, чем его родитель, значение родителя применяется. Другими словами, если родительский элемент не показан, ни один не дочерний элемент. Но если родительский элемент показан, можно скрыть дочерний элемент.

Произношение

pr отмечает произношение записи. Вы не предоставляете a value припишите, потому что все значения приемлемы.

<!ATTLIST div d:priority NMTOKEN #IMPLIED >
<!ATTLIST span d:priority NMTOKEN #IMPLIED >

Например:

<h1>make</h1>
<span class="syntax"><span d:pr="1">| māk |</span></span>

Можно использовать этот тег для переключения нотации произношения согласно специфичным для словаря предпочтениям.

Ссылка

Можно реализовать гипертекстовую ссылку следующим образом:

<h3>PHRASES</h3>
     ...
     <h4><a href="x-dictionary:r:make_up_ones_mind"><b>make up one's mind</b></a></h4>

Когда пользователь щелкает по ссылке, она переходит к следующей словарной статье, ID которой make_up_ones_mind:

<d:entry id="make_up_ones_mind" d:title="make up one's mind" d:parental-control="1">
    <d:index d:value="make up one's mind"/>
    <h1>make up one's mind</h1>
    <ul>
        <li>
        make a decision.
        </li>
    </ul>
</d:entry>

Для других изменений см. Схему URI.

Схема URI

x-dictionary: схема URI, описывающая перекрестные ссылки между записями в словарях. Это используется в теге такой как <a href="x-dictionary:r:another_id">.

x-dictionary: URI содержит три элемента, разделенные двоеточиями, поскольку общая форма — предназначается для селектора, целевого текста, и словарь связывает ID. Целевой селектор должен быть также d (для определения) или r (для ссылки). Использовать d если Вы хотите искать определения следующего ключевого текста. Использовать r если Вы хотите обратиться к записи, указанной ссылочным ID, который должен быть уникален для каждого словаря.

  x-dictionary:d:key_text:dict_bundle_id
  x-dictionary:r:reference_id:dict_bundle_id

Пакет словаря ID может быть опущен в обеих формах, как показано в следующих строках. Если это опущено, Dictionary Services ищет целевой текст во всех активных словарях.

  x-dictionary:d:key_text
  x-dictionary:r:reference_id

Yomi

d:yomi припишите отмечает японский Yomi.

Для получения дополнительной информации на Yomi и маркировке содержание Yomi в японском словаре, посмотрите Создание японского Словаря.