<?xml version="1.0" encoding="UTF-8" ?> <chapter id="extending-quanta-3-2"> <chapterinfo> <title >Расширение &quantaplus;</title> <authorgroup> <author ><firstname >Christopher</firstname > <surname >Hornbaker</surname > <affiliation > <address ><email >chrishornbaker@earthlink.net</email ></address> </affiliation> </author> <author ><firstname >András</firstname > <surname >Mantia</surname > <affiliation > <address ><email >amantia@kde.org</email ></address> </affiliation> </author> <othercredit role="translator" ><firstname >Николай</firstname ><surname >Шафоростов</surname ><affiliation ><address ><email >shafff@ukr.net</email ></address ></affiliation ><contrib >Перевод на русский</contrib ></othercredit > </authorgroup> </chapterinfo> <title >Расширение &quantaplus;</title> <para >Эта глава описывает процесс расширения базовых возможностей &quantaplus; для ваших нужд и как вы можете содействовать её развитию. </para> <!--<sect1 id="kommander-3-2"> <title >Using Kommander With &quantaplus;</title> <para> Kommander, by Marc Britton. </para> </sect1 > --> <sect1 id="dtep-intro-3-2"> <title >Пакеты правки типов документов (Document Type Editing Package, &DTEP;)</title> <para >&DTEP; используются в &quantaplus; для поддержки языков разметки, сценариев и &CSS;. Они позволяют обеспечить такие функции как автозавершение, редактирование тегов. Их простота и надёжность делает &quantaplus; быстрой, дружественной средой для веб-разработчиков. </para> <para >&DTEP; делятся на две семьи - разметочную (далее - семья 1) и сценарную с &CSS; (далее - семья 2). &DTEP; состоит из двух частей - каталога тегов и панелей инструментов. Каталог тегов состоит из файла описания description.rc и файла TagXML с расширением .tag. Панель инструментов - это набор кнопок со значками (над окном редактирования), каждая из которых соответствует какому-либо тексту, вставляемому в документ при нажатии на неё (часто это шаблон тега). </para> <para >&DTEP; можно создать самому вручную (см. ниже), <link linkend="download-resources" >загрузить</link > или создать автоматически из DTD. Такое преобразование описано в <xref linkend="converting-dtd"/>. </para> <para >В этой части описывается создание файлов TagXML, &descriptionrc; и панелей инструментов. В общем, &DTEP;. </para> <para >Файлы TagXML (.tag) определяют атрибуты, специфичные для данного тега и содержимое диалога "Свойства тега". Файл &descriptionrc; содержит правила и данные о &DTEP;. Панели инструментов позволяют быстро обратиться к тому или иному тегу для вставки его в документ. </para> <sect2 id="dtep-packaging-3-2"> <title >Создание пакетов</title> <para >Каталоги тегов - это обычные каталоги, содержащие файлы &descriptionrc; и TagXML. В их названии отражается название языка разметки с его версией (например, html-4.01-strict) </para> </sect2> <sect2 id="tagxml-3-2"> <title >TagXML</title> <para >Таблица содержит список элементов, определённых в TagXML и говорит, обязательны они, или нет. Не смотря на то, что обязательны не все, рекомендуется всё же использовать как можно больше доступных элементов, чтобы пользователи имели больше настроек и информации. </para> <informaltable> <tgroup cols="3"> <thead> <row> <entry >Элемент</entry> <entry >Использование по умолчанию</entry> <entry >Частное использование</entry> </row> </thead> <tbody> <row> <entry >TAGS</entry> <entry >required</entry> <entry >always</entry> </row> <row> <entry >tag</entry> <entry >required</entry> <entry >always</entry> </row> <row> <entry >label</entry> <entry >optional</entry> <entry >обязательно для диалога "Свойства"</entry> </row> <row> <entry >attr</entry> <entry >optional</entry> <entry >обязательно для определения атрибута</entry> </row> <row> <entry >tooltip</entry> <entry >optional</entry> <entry >обязательно для подсказок в диалоге "Свойства"</entry> </row> <row> <entry >whatsthis</entry> <entry >optional</entry> <entry >обязательно для возможности отображения краткой справки <quote >Что это? </quote ></entry> </row> <row> <entry >list</entry> <entry >optional</entry> <entry >обязательно если attr имеет тип <quote >list</quote ></entry> </row> <row> <entry >item</entry> <entry >optional</entry> <entry >обязательно если используется <list ></entry> </row> <row> <entry >textlocation</entry> <entry >optional</entry> <entry >always</entry> </row> <row> <entry >location</entry> <entry >optional</entry> <entry >обязательно если используется метка</entry> </row> <row> <entry >text</entry> <entry >optional</entry> <entry >обязательно если используется метка</entry> </row> <row> <entry >children</entry> <entry >optional</entry> <entry >список тегов, которые могут использоваться в определяемом</entry> </row> <row> <entry >child</entry> <entry >required</entry> <entry >дочерний элемент</entry> </row> <row> <entry >stoppingtags</entry> <entry >optional</entry> <entry >список тегов, которые приводят к окончанию действия другого тега</entry> </row> <row> <entry >stoppingtag</entry> <entry >required</entry> <entry >тег, который приводит к окончанию действия другого тега</entry> </row> </tbody> </tgroup> </informaltable> <sect3 id="dtep-element-descriptions-3-2"> <title >Описания элементов TagXML</title> <para >Ниже детально описывается каждый элемент. </para> <sect4 id="TAGS-3-2"> <title >TAGS</title> <para >Корневой элемент файла TagXML. Может встречаться только один раз. Содержит определение нескольких тегов. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry ><emphasis >НЕТ</emphasis ></entry> <entry >tag</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="tag-3-2"> <title >tag</title> <para >Название определяемого тега. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >TAGS</entry> <entry >label, attr, stoppingtags</entry> </row> </tbody> </tgroup> </informaltable> <informaltable> <tgroup cols="6"> <thead> <row> <entry >Атрибут</entry ><entry >Тип</entry ><entry >Значения</entry> <entry >По умолчанию</entry ><entry >Use</entry ><entry >Описание</entry> </row> </thead> <tbody> <row> <entry >name</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >required</entry ><entry >Название определяемого тега.</entry> </row> <row> <entry >single</entry ><entry >boolean</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Требуется ли закрывающий тег </имя_тега >.</entry> </row> <row> <entry >type</entry ><entry >string</entry ><entry ></entry ><entry >xmltag</entry> <entry >optional</entry ><entry >Тип определяемого тега.</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >xmltag</entry ><entry ></entry> <entry ></entry ><entry >Тип тега основывается на XML (только семья 1).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >entity</entry ><entry ></entry> <entry ></entry ><entry >Тип тега основывается на сущности (только семья 1).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >property</entry ><entry ></entry> <entry ></entry ><entry >Тип тега основывается на &CSS; (только семья 2).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >function</entry ><entry ></entry> <entry ></entry ><entry >Тип тега - функция сценария. Если это так, <attr > становится аргументами функции (только семья 2).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >class</entry ><entry ></entry> <entry ></entry ><entry >Тип тега - класс сценария (только семья 2).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >method</entry ><entry ></entry> <entry ></entry ><entry >Тип тега - метод класса (только семья 2).</entry> </row> <row> <entry >returnType</entry ><entry >string</entry ><entry ></entry ><entry >void </entry> <entry >optional</entry ><entry >Тип возвращаемого значения определяемой функции (только семья 2)</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >void</entry ><entry ></entry> <entry ></entry ><entry >Возвращаемое значение игнорируется (void).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >int</entry ><entry ></entry> <entry ></entry ><entry >Возвращается число (integer).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >float</entry ><entry ></entry> <entry ></entry ><entry >Возвращается число с плавающей точкой (floating point).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >long</entry ><entry ></entry> <entry ></entry ><entry >Возвращается длинное целочисленное (long integer).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >string</entry ><entry ></entry> <entry ></entry ><entry >Возвращается строка</entry> </row> <row> <entry >version</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Версия языка, для которой тег разрешён</entry> </row> <row> <entry >extends</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Разрешено только если тип атрибута - "class". Имя базового класса (только семья 2).</entry> </row> <row> <entry >class</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Разрешено только если тип атрибута - "method". Имя класса, к которому принадлежит метод (только семья 2).</entry> </row> <row> <entry >common</entry ><entry >boolean</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Если "yes", тег указывает группу общих атрибутов и они могут быть добавлены в любой другой тег (только семья 1).</entry> </row> <row> <entry >comment</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >строка, выводящаяся возле имени тега в списке автозавершения</entry> </row ></tbody> </tgroup> </informaltable> </sect4> <sect4 id="label-3-2"> <title >label</title> <para >Добавить в диалог метку. Её текст указывается тегом <text >. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >tag</entry> <entry >text, location</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="attr-3-2"> <title >attr</title> <para >Определяет один атрибут тега. Содержит имя, тип атрибута, информацию о его отображении. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >tag</entry> <entry >location, list, tooltip, whatsthis, textlocation</entry> </row> </tbody> </tgroup> </informaltable> <informaltable> <tgroup cols="6"> <thead> <row> <entry >Атрибут</entry ><entry >Тип</entry ><entry >Значения</entry> <entry >По умолчанию</entry ><entry >Use</entry ><entry >Описание</entry> </row> </thead> <tbody> <row> <entry >name</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >required</entry ><entry >Имя определяемого атрибута.</entry> </row> <row> <entry >type</entry ><entry >string</entry ><entry ></entry ><entry >input</entry> <entry >required</entry ><entry >Тип определяемого атрибута.</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >input</entry ><entry ></entry> <entry ></entry ><entry >Поте текстового ввода (text field).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >check</entry ><entry ></entry> <entry ></entry ><entry >Логическое поле (check box).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >color</entry ><entry ></entry> <entry ></entry ><entry >Значение поля - цвет</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >url</entry ><entry ></entry> <entry ></entry ><entry >Значение поля - &URL; (или локальный файл)</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >list</entry ><entry ></entry> <entry ></entry ><entry >Значение поля - запись указанного списка.</entry> </row> <row> <entry >status</entry ><entry >string</entry ><entry ></entry ><entry >optional</entry> <entry >required</entry ><entry >Обязательность аргумента (только семья 2).</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >optional</entry ><entry ></entry> <entry ></entry ><entry >Аргумент необязателен</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >required</entry ><entry ></entry> <entry ></entry ><entry >Аргумент обязателен</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >implied</entry ><entry ></entry> <entry ></entry ><entry >Аргумент есть неявный.</entry> </row> <row> <entry >source</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Указывает источники вариантов значений атрибута в редакторе тегов и дереве атрибутов</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >selection</entry ><entry ></entry> <entry ></entry ><entry >Выделенный текст</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >dcop</entry ><entry ></entry> <entry ></entry ><entry >Вывод метода dcop</entry> </row> <row> <entry >interface</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Требует source="dcop". Интерфейс dcop из &quantaplus;.</entry> </row> <row> <entry >method</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Требует source="dcop" и имени интерфейса. Имя метода, предоставляемого интерфейсом &quantaplus;.</entry> </row> <row> <entry >arguments</entry ><entry >string</entry ><entry ></entry ><entry ></entry> <entry >optional</entry ><entry >Требует source="dcop" имени интерфейса и метода. Аргументы, передаваемые методу. Может быть пустым или "%tagname%" (имя текущего тега).</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="tooltip-3-2"> <title >tooltip</title> <para >Текст подсказки поля (отображается при наведении курсора на него). </para> <note> <para >Поддерживается только обычный текст (т.е. нельзя использовать никакие теги). </para> </note> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >attr</entry> <entry ><emphasis >НЕТ</emphasis ></entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="whatsthis-3-2"> <title >whatsthis</title> <para >Текст "Что это?" для данного поля. </para> <note> <para >Поддерживается только обычный текст (т.е. нельзя использовать никакие теги). </para> </note> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >attr</entry> <entry ><emphasis >НЕТ</emphasis ></entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="list-3-2"> <title >list</title> <para >Тег, сводящий вместе записи в списке. Может употребляться только один раз для каждого описания атрибута. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >attr</entry> <entry >item</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="item-3-2"> <title >item</title> <para >Определяет запись в списке. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >list</entry> <entry ><emphasis >НЕТ</emphasis ></entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="textlocation-3-2"> <title >textlocation</title> <para >Позиция в окне свойств параметра, отвечающего атрибуту тега. Может употребляться только один раз для каждого атрибута диалога (т.е. для каждого <attr >). Не может содержать подэлементы. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry> <entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >attr</entry> <entry ><emphasis >НЕТ</emphasis ></entry> </row> </tbody> </tgroup> </informaltable> <informaltable> <tgroup cols="4"> <thead> <row> <entry >Атрибут</entry ><entry >Тип</entry> <entry >Use</entry ><entry >Описание</entry> </row> </thead> <tbody> <row> <entry >row</entry ><entry >неотрицательное целое</entry> <entry >required</entry ><entry >Ряд поля или метки при отображении в окне.</entry> </row> <row> <entry >col</entry ><entry >неотрицательное целое</entry> <entry >required</entry ><entry >Столбец поля или метки при отображении в окне.</entry> </row> <row> <entry >rowspan</entry ><entry >неотрицательное целое</entry> <entry >optional</entry ><entry >Число рядов, отводимых полю.</entry> </row> <row> <entry >colspan</entry ><entry >неотрицательное целое</entry> <entry >optional</entry ><entry >Число столбцов, отводимых полю.</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="location-3-2"> <title >location</title> <para >Положение и размер поля в окне свойств. Может употребляться только один раз для каждого поля в диалоге (т.е. для каждого <attr > и <label >). Не может содержать подэлементы. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry ><entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >label, attr</entry ><entry ><emphasis >НЕТ</emphasis ></entry> </row> </tbody> </tgroup> </informaltable> <informaltable> <tgroup cols="4"> <thead> <row> <entry >Атрибут</entry ><entry >Тип</entry> <entry >Use</entry ><entry >Описание</entry> </row> </thead> <tbody> <row> <entry >row</entry ><entry >неотрицательное целое</entry> <entry >required</entry ><entry >Ряд поля или метки при отображении в окне.</entry> </row> <row> <entry >col</entry ><entry >неотрицательное целое</entry> <entry >required</entry ><entry >Столбец поля или метки при отображении в окне.</entry> </row> <row> <entry >rowspan</entry ><entry >неотрицательное целое</entry> <entry >optional</entry ><entry >Число рядов, отводимых полю.</entry> </row> <row> <entry >colspan</entry ><entry >неотрицательное целое</entry> <entry >optional</entry ><entry >Число столбцов, отводимых полю.</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="text-3-2"> <title >text</title> <para >Текст метки или флажка (check box). </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry ><entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >label, attr</entry ><entry ><emphasis >НЕТ</emphasis ></entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="children-3-2"> <title >children</title> <para >Список элементов, которые могут использоваться в определяемом теге. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry ><entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >tag</entry ><entry >child</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="child-3-2"> <title >child</title> <para >Дочерний тег. Не может содержать подэлементы. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry ><entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >children</entry ><entry ><emphasis >НЕТ</emphasis ></entry> </row> </tbody> </tgroup> </informaltable> <informaltable> <tgroup cols="4"> <thead> <row> <entry >Атрибут</entry ><entry >Тип</entry ><entry >Значения</entry> <entry >Use</entry ><entry >Описание</entry> </row> </thead> <tbody> <row> <entry >name</entry ><entry >string</entry ><entry ></entry> <entry >required</entry ><entry >Тег, который может употребляться в некотором другом теге.</entry> </row> <row> <entry >использование</entry ><entry >string</entry ><entry ></entry> <entry >optional</entry ><entry >Отношение к родителю.</entry> </row> <row> <entry ></entry ><entry ></entry ><entry >required</entry> <entry ></entry ><entry >Родитель должен иметь как минимум одного потомка с этим именем.</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="stoppingtags-3-2"> <title >stoppingtags</title> <para >Список элементов, которые приводят к окончанию действия тега. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry ><entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >tag</entry ><entry >stoppingtag</entry> </row> </tbody> </tgroup> </informaltable> </sect4> <sect4 id="stoppingtag-3-2"> <title >stoppingtag</title> <para >Тег, приводящий к окончанию действия другого тега. Не может содержать подэлементы. </para> <informaltable> <tgroup cols="2"> <thead> <row> <entry >Родительские элементы</entry ><entry >Дочерние элементы</entry> </row> </thead> <tbody> <row> <entry >stoppingtags</entry ><entry ><emphasis >НЕТ</emphasis ></entry> </row> </tbody> </tgroup> </informaltable> <informaltable> <tgroup cols="4"> <thead> <row> <entry >Атрибут</entry ><entry >Тип</entry> <entry >Use</entry ><entry >Описание</entry> </row> </thead> <tbody> <row> <entry >name</entry ><entry >string</entry> <entry >required</entry ><entry >Теги, приводящие к окончанию действия другого тега.</entry> </row> </tbody> </tgroup> </informaltable> </sect4> </sect3> <sect3 id="tagxml-usage-3-2"> <title >Использование TagXML</title> <para >Все файлы TagXML должны начинаться с декларации &XML;: <?xml version="1.0" encoding="UTF-8"?>, правильно структурированными и закрытыми. </para> <important> <para >Пробелы не играют роли, однако следите за символами & и <. В элементах <tooltip >, <whatsthis >, <text >, их лучше заменить на &amp; и &lt; соответственно. Невыполнение этого не приведёт к краху, но ваша работа может пропасть. </para> </important> </sect3> <sect3 id="tagxml-validation-3-2"> <title >Проверка TagXML</title> <para >Чтобы выполнить проверку файлов TagXML, выберите <quote >Сервис</quote >, <quote >Проверить TagXML.</quote >. </para> <note> <para >Эта функция пока что не реализована и проверка происходит при загрузке файлов TagXML в &quantaplus;. </para> </note> </sect3> <sect3 id="tagxml-examples-3-2"> <title >Примеры TagXML</title> <sect4 id="family-one-3-2"> <title >Семья 1</title> <para >Ниже следует файл TagXML семьи 1. Он описывает элемент &W3C; &XML; <schema >. Имя такого файла будет schema.tag. Просто, не так ли? </para> <informalexample> <literallayout ><markup> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE TAGS> <TAGS> <tag name="schema"> <label> <text >id</text> <location col="0" row="0"/> </label> <attr name="id" type="input"> <tooltip >A unique ID for the element.</tooltip> <whatsthis >A unique ID for the element.</whatsthis> <location col="1" row="0"/> </attr> <label> <text >version</text> <location col="0" row="1"/> </label> <attr name="version" type="input"> <tooltip >Version of the schema.</tooltip> <whatsthis >Version of the schema.</whatsthis> <location col="1" row="1"/> </attr> <label> <text >targetNamespace</text> <location col="0" row="2"/> </label> <attr name="targetNamespace" type="input"> <tooltip >&URI; reference of the namespace of this schema.</tooltip> <whatsthis >&URI; reference of the namespace of this schema.</whatsthis> <location col="1" row="2"/> </attr> <label> <text >xmlns</text> <location col="0" row="3"/> </label> <attr name="xmlns" type="input"> <tooltip >&URI; reference for one or more namespaces for use in this schema. If no prefix is used, then components of that namespace may be used unqualified.</tooltip> <whatsthis >&URI; reference for one or more namespaces for use in this schema. If no prefix is used, then components of that namespace may be used unqualified.</whatsthis> <location col="1" row="3"/> </attr> <label> <text >attributeFormDefault</text> <location col="0" row="4"/> </label> <attr name="attributeFormDefault" type="list"> <items> <item >qualified</item> <item >unqualified</item> </items> <tooltip >Default form for all attributes within this schema.</tooltip> <whatsthis >Default form for all attributes within this schema.</whatsthis> <location col="1" row="4"/> </attr> <label> <text >elementFormDefault</text> <location col="0" row="5"/> </label> <attr name="elementFormDefault" type="list"> <items> <item >qualified</item> <item >unqualified</item> </items> <tooltip >Default form for all elements within this schema.</tooltip> <whatsthis >Default form for all elements within this schema.</whatsthis> <location col="1" row="5"/> </attr> <label> <text >blockDefault</text> <location col="0" row="6"/> </label> <attr name="blockDefault" type="input"> <location col="1" row="6"/> </attr> <label> <text >finalDefault</text> <location col="0" row="7"/> </label> <attr name="finalDefault" type="input"> <location col="1" row="7"/> </attr> </tag> </TAGS> </markup > </literallayout> </informalexample> </sect4> <sect4 id="family-two-3-2"> <title >Семья 2</title> <para >Ниже следует файл TagXML семьи 2. Он описывает &PHP;-функцию перегрузки (overload). Имя такого файла будет overload.tag. </para> <informalexample> <literallayout ><markup> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tags> <tags> <tag name="overload" type="function" returnType="void"> <attr name="class_name" type="string" status="optional"/> </tag> </tags> </markup > </literallayout> </informalexample> </sect4> </sect3> </sect2> <sect2 id="descriptionrc-3-2"> <title >&descriptionrc;</title> <para >Файл &descriptionrc; также имеет простую структуру, для него есть редактор, который можно вызвать из <menuchoice ><guimenu >DTD</guimenu ><guimenuitem >Параметры DTD...</guimenuitem ></menuchoice >. Чтобы изменить &descriptionrc; вновь созданного &DTEP;, создайте файл &descriptionrc; со следующими параметрами: </para> <para> <informalexample> <literallayout ><markup> [General] Version = Пишите 1 для &quantaplus; версии <=3.1.2 и 2 - для любой более поздней версии. Name = Строка определения DTD. (-//&W3C;//DTD HTML 4.01 Transitional//EN) NickName = Красивое имя DTD. (HTML 4.01 Transitional). если не указано, будет использоваться Name. </markup > </literallayout> </informalexample> </para> <para >После того, как вы создали такой файл и сохранили его в папку с файлами тегов, загрузите новый &DTEP; через <menuchoice ><guimenu >DTD</guimenu ><guimenuitem >Загрузить пакет DTD (DTEP)...</guimenuitem ></menuchoice >, теперь вы можете продолжить правку &DTEP;. Воспользуйтесь контекстной справкой (всплывающими подсказки и "что это?") панели инструментов редактора, или прочтите файл<filename >quanta/data/dtep/dtd-description.txt</filename > из исходного архива, в котором подробно описан формат. </para> </sect2> </sect1> <sect1 id="user-actions"> <title >Действия, определяемые пользователем</title> <para >В &quantaplus; можно настраивать и создавать свои действия, выполняемые при нажатии на кнопку панели инструментов, выборе пункта меню или нажатии комбинации клавиш. </para> <para >Существует три типа действий, определяемых пользователем: <itemizedlist> <listitem ><para ><link linkend="text-actions" >Операции с текстом</link ></para ></listitem> <listitem ><para ><link linkend="tag-actions" >Операции с тегами</link ></para ></listitem> <listitem ><para ><link linkend="script-actions" >Операции на основе сценариев</link ></para ></listitem> </itemizedlist> </para> <sect2 id="creating-actions"> <title >Создание действий</title> <para >Создать действие можно с помощью пункт меню<menuchoice ><guimenu >Настройка</guimenu ><guimenuitem >Настроить действия</guimenuitem ></menuchoice >: <mediaobject > <imageobject> <imagedata fileref="dtep_doc_img7.png" format="PNG"/> </imageobject> </mediaobject> <variablelist> <varlistentry> <term ><guilabel >Тип</guilabel ></term> <listitem ><para ><link linkend="text-actions" >Текст</link >, <link linkend="tag-actions" >Тег</link > или <link linkend="script-actions" >Сценарий</link >.</para> </listitem> </varlistentry> <varlistentry> <term ><guilabel >Текст</guilabel ></term> <listitem ><para >Имя действия, видимое пользователю.</para> </listitem> </varlistentry> <varlistentry> <term >Кнопка рядом с текстовой меткой</term> <listitem ><para >Значок, присвоенный данному действию. Щёлкните на нём чтобы его изменить.</para> </listitem> </varlistentry> <varlistentry> <term ><guilabel >Всплывающая подсказка</guilabel ></term> <listitem ><para >Краткое описание действия.</para> </listitem> </varlistentry> <varlistentry> <term ><guilabel >Комбинация клавиш</guilabel ></term> <listitem ><para >Комбинация клавиш, присвоенная действию.</para> </listitem> </varlistentry> <varlistentry> <term ><guilabel >Панели инструментов</guilabel ></term> <listitem ><para >Панели инструментов, содержащие действие. Для подробностей см. <xref linkend="creating-toolbars-3-2"/>.</para> </listitem> </varlistentry> <varlistentry> <term ><guilabel >Расширенные настройки</guilabel ></term> <listitem ><para >Параметры, специфичные для каждого типа действий. См. далее </para ></listitem> </varlistentry> </variablelist> </para> </sect2> <sect2 id="text-actions"> <title >Операции с текстом</title> <para> <mediaobject ><imageobject> <imagedata fileref="text-action.png" format="PNG"/> </imageobject ></mediaobject > Самые простые действия. Вы можете ввести текст в области <guilabel >Расширенные настройки</guilabel >, который будет вставлен в документ при выполнении действия. </para> </sect2> <sect2 id="tag-actions"> <title >Операции с тегами</title> <para >Используется для вставки XML-тегов в текст. <mediaobject ><imageobject > <imagedata fileref="tag-actions.png" format="PNG"/> </imageobject ></mediaobject > <variablelist > <varlistentry > <term ><guilabel ><tag></guilabel ></term > <listitem ><para >Имя тега.</para ></listitem > </varlistentry > <varlistentry > <term ><guilabel ></tag></guilabel ></term > <listitem ><para >Если флажок отмечен, нужен также закрывающий тег. Если при вызове действия в документе будет присутствовать выделенный текст, то начальный тег будет вставлен перед ним, а закрывающий - после.</para ></listitem > </varlistentry > <varlistentry > <term ><guilabel >Запустить диалог "Изменить тег", если он доступен</guilabel ></term > <listitem ><para >Если для данного тега будет найден файл tagXML с описанием его атрибутов, перед вставкой тега будет предложено ввести их в диалоговом окне.</para ></listitem > </varlistentry > </variablelist > Символы <, > и / не будут автоматически добавлены и вы должны ввести их сами. </para> </sect2> <sect2 id="script-actions"> <title >Операции на основе сценариев</title> <para> <mediaobject ><imageobject> <imagedata fileref="script-action.png" format="PNG"/> </imageobject ></mediaobject > Этот тип действий - самый мощный. С помощью него можно запускать внешние приложения (в основном это сценарии), которым будет передаваться документ или его часть. Примером такого типа служит стандартный диалог &quantaplus; <guibutton >Быстрый запуск</guibutton >, различные действия, связанные с (X)HTML. </para> <para >Сначала нужно ввести строку запуска сценария, например: <command >sh /home/myHome/myScript.sh</command >. </para> <para >Для указания пути рекомендуется использовать <command >%scriptdir</command > (например: <command >sh %scriptdir/myScript.sh</command >). Тогда сценарий будет искаться в нескольких папках, а именно: <itemizedlist > <listitem ><para >глобальная папка сценариев: <filename ><envar >$KDEDIR</envar >/share/apps/quanta/scripts</filename ></para ></listitem > <listitem ><para >локальная папка сценариев: <filename ><envar >$KDEHOME</envar >/share/apps/quanta/scripts</filename ></para ></listitem > <listitem ><para >список путей пользователя: <envar >$PATH</envar ></para ></listitem ></itemizedlist > Есть также другие переменные: <itemizedlist> <listitem ><para ><command >%f</command >: адрес текущего документа. Последовательность символов "file:/" будет удалена из имени файла.</para ></listitem> <listitem ><para ><command >%input</command >: выделенный текст (см. далее).</para ></listitem> <listitem ><para ><command >%projectbase</command >: адрес текущего проекта. Если нет открытых проектов, возвращает пустую строку.</para ></listitem> <listitem ><para ><command >%pid</command >: PID процесса &quantaplus;. Если запущен один экземпляр &quantaplus; перед PID будет добавлено "unique ". Это может быть использовано для работы через DCOP.</para ></listitem> <listitem ><para ><command >%userarguments</command >: используется при событиях. Будет заменено свойствами события в следующем порядке: <variablelist> <varlistentry> <term >Первый аргумент</term> <listitem ><para >Дескриптор (id) сценария</para ></listitem> </varlistentry> <varlistentry> <term >Второй аргумент</term> <listitem ><para >имя события</para ></listitem> </varlistentry> <varlistentry> <term >Третий аргумент</term> <listitem ><para >параметры события, обычно имя текущего файла, или путь к файлу проекта.</para ></listitem> </varlistentry> </variablelist> </para ></listitem> </itemizedlist> </para> <para >Также сценарий может получить исходные данные напрямую от &quantaplus; через стандартный вход. В выпадающем списке <guilabel >Ввод</guilabel > вы можете выбрать данные, которые будут посылаться: <itemizedlist> <listitem ><para ><guilabel >Ничего</guilabel >.</para ></listitem> <listitem ><para ><guilabel >Текущий документ</guilabel >: весь документ.</para ></listitem> <listitem ><para ><guilabel >Выделенный текст</guilabel >. Только когда выбран этот вариант, <command >%input</command > имеет смысл.</para ></listitem> </itemizedlist> </para> <para >Аналогично, можно получить вывод сценария через конфейеры. Существует два типа вывода: <itemizedlist > <listitem ><para >обычный (stdout);</para > </listitem > <listitem ><para >ошибки (stderr).</para > </listitem > </itemizedlist >Вы можете выбрать, что делать с выводом, возможные варианты: <itemizedlist> <listitem ><para ><guilabel >Ничего</guilabel >.</para ></listitem> <listitem ><para ><guilabel >Вставить в позицию курсора</guilabel >.</para ></listitem> <listitem ><para ><guilabel >Заменить выделение</guilabel >.</para ></listitem> <listitem ><para ><guilabel >Заменить выделение</guilabel >.</para ></listitem> <listitem ><para ><guilabel >Создать новый документ</guilabel >.</para ></listitem> <listitem ><para ><guilabel >Заменить текущий документ</guilabel >.</para ></listitem> <listitem ><para ><guilabel >Окно сообщений</guilabel >: вывод сценарий будет помещён на служебную вкладку <guilabel >Сообщения</guilabel >.</para ></listitem> </itemizedlist> </para> <para >Варианты для вывода сообщений об ошибках такие же.</para> </sect2> </sect1> <sect1 id="creating-toolbars-3-2"> <title >Создание панелей инструментов</title> <para >Ниже следует описание создания панелей инструментов для &DTEP;. По сути, это - графические элементы, отвечающие определённому действию. Последнее - основа почти всех расширений, которые есть или будут появляться в будущем в &quantaplus;. Схема определения действия в &quantaplus; также годится для автозавершения и диалогов свойств тегов. </para> <sect2 id="from-scratch-to-complete-3-2"> <title >С нуля до совершенства</title> <para >Начнём с создания пользовательской панели инструментов: <menuchoice ><guimenu >Панели инструментов</guimenu ><guimenuitem >Добавить пользовательскую панель инструментов</guimenuitem ></menuchoice >. </para> <para >Если в языке разметки много тегов, лучше разделить их по группам. Для каждой группы создайте отдельную панель инструментов. В нашем случае тегов не много, поэтому обойдёмся одной. </para> <para >Далее следует добавить и настроить действия - <menuchoice ><guimenu >Настройка</guimenu ><guimenuitem >Настроить действия...</guimenuitem ></menuchoice >. </para> <para >Нажмите кнопку <guibutton >Создать</guibutton > (внизу окна). </para> <para >Заполните все необходимые поля и добавьте тег в соответствующую панель инструментов. </para> <para >Если у тега есть атрибуты (и вы будете часто их использовать), отметьте <guilabel >Запустить диалог "Изменить тег", если он доступен</guilabel >, и каждый раз при использовании данного действия, будет предложено заполнить свойства добавляемого тега. </para> <para >Теперь у вас должно быть что-то вроде этого. </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img7.png" format="PNG"/> </imageobject> </mediaobject> <para >Нажмите кнопку <guibutton >Применить</guibutton >. </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img8.png" format="PNG"/> </imageobject> </mediaobject> <para >Но что же получилось?! Как вы запомните, какой значок к какому действию относится? Давайте заменим его на свой (покрасивее). </para> <para >Для создания значка можно использовать &kiconedit;. Запустите её из &kmenu;, <menuchoice > <guisubmenu >Графика</guisubmenu ><guisubmenu >Дополнительные приложения</guisubmenu ></menuchoice >) </para> <para >&kiconedit; создаёт значки с расширением 32x32, однако нам нужно 22x22 - <menuchoice > <guimenu >Правка</guimenu > <guimenuitem >Изменить размер</guimenuitem > </menuchoice >. </para> <para >Помните, что вы создаёте значок, который поможет вспомнить вам (и не только вам) действие, которому он отвечает, а не просто красивую картинку. </para> <para >В нашем случае создаётся значок для тега <start >,поэтому для него будет использоваться зелёный цвет. </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img15.png" format="PNG"/> </imageobject> </mediaobject> <para >Сохраним значок. </para> <para >После создания значка нужно ассоциировать его с действием. Откройте окно <emphasis >Настроить действия</emphasis > и выберите нужное действие. Слева от поля <emphasis >Текст</emphasis > есть кнопка - нажмите её. </para> <para >Выберите <guilabel >Прочие пиктограммы</guilabel > и нажмите кнопку <guibutton >Обзор</guibutton >. </para> <para >Перейдите в каталог, в котором вы сохранили значок, выберите его и нажмите <guibutton >OK</guibutton >. </para> <para >Нажмите кнопку <guibutton >Применить</guibutton > > или <guibutton >OK</guibutton >. </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img18.png" format="PNG"/> </imageobject> </mediaobject> <para >Чтобы добавить какие-то общие для &quantaplus; функции на панель инструментов, или разделители кнопок, в окне <guilabel >Настроить панели инструментов</guilabel > выделите нужную панель инструментов и выберите в списке слева действие (или разделитель). </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img21.png" format="PNG"/> </imageobject> </mediaobject> <para >Например, можно добавить <guilabel >Просмотр в Konqueror</guilabel >. </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img22.png" format="PNG"/> </imageobject> </mediaobject> <para >Обратите внимание на то, что разделитель способствует группированию. Один человек подумал, что кнопка &konqueror;, стоящая рядом с зелёной кнопкой "Старт", имеет противоположное значение ("Стоп"). </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img23.png" format="PNG"/> </imageobject> </mediaobject> <para >После внесения изменений, нажмите кнопку <guibutton >OK</guibutton >. </para> <para >Посмотрите на новую панель инструментов! Фантастика! </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img24.png" format="PNG"/> </imageobject> </mediaobject> <para >Не забудьте протестировать вашу новую панель инструментов нажатием всех расположенных на ней кнопок. </para> <mediaobject> <imageobject> <imagedata fileref="dtep_doc_img25.png" format="PNG"/> </imageobject> </mediaobject> <para ><menuchoice ><guimenu >Панели инструментов</guimenu > <guisubmenu >Сохранить</guisubmenu ><guimenuitem > Сохранить как локальную панель инструментов</guimenuitem ></menuchoice >. </para> <para >Сохраните её в правильном каталоге. Убедитесь, что вы заполнили &descriptionrc; так, чтобы при открытии документа данного типа, загружались соответствующие панели инструментов. </para> </sect2> </sect1> <sect1 id="creating-quanta-docs-3-2"> <sect1info> <title >Написание документации</title> <authorgroup> <author ><firstname >Robert</firstname > <surname >Nickel</surname > <affiliation > <address ><email >robert@artnickel.com</email ></address> </affiliation> </author> <othercredit role="translator" ><firstname >Николай</firstname ><surname >Шафоростов</surname ><affiliation ><address ><email >shafff@ukr.net</email ></address ></affiliation ><contrib >Перевод на русский</contrib ></othercredit > </authorgroup> </sect1info> <title >Написание документации</title> <para >Самое заметное, что может сделать рядовой пользователь - дополнение документации по разметочному или скриптовому языку, который ему нравится. Далее описывается, как было создано дерево документации &PHP;. </para> <para >Перед началом написания проверьте <ulink url="http://quanta.sf.net/main1.php?contfile=resource" >репозиторий &quantaplus;</ulink >. </para> <para >Первый шаг - получение существующей документации. Второй - создание файла <filename >docrc</filename >. </para> <para >Общая форма docrc: </para> <informalexample> <literallayout >#KDE Config File [Tree] Doc dir=<replaceable >путь (относительно к этому файлу) к файлам html</replaceable > ⪚ php42/ #top level elements Top Element=<replaceable >Описание документации</replaceable > ⪚ &PHP; 4.2 documentation Section 1=Section1.html Section 2=#Sec2.1,#Sec2.2,#Sec2.3 Sec2.1=Sec2.1.html Sec2.2=Sec2.2.html Sec2.3=Sec2.3.html ... [Context] ContextList=func1,func2,tag1,tag2,tag3 func1=func1.html func2=func2.html tag1=tag1.html tag2=tag2.html tag3=tag3.html </literallayout> </informalexample> <para >Файл <filename >docrc</filename > разделён на две секции - Tree и Context. </para> <para >Секция Tree определяет размещение вашей документации в структуре (слева в главном окне). Например: </para> <mediaobject> <imageobject> <imagedata fileref="doc-view1.png" format="PNG"/> </imageobject> </mediaobject> <para >В соответствии со структурой, описанной выше, <filename >docrc</filename > для &PHP; выглядит так: </para> <informalexample> <literallayout >#KDE Config File [Tree] Doc dir=php42/ #top level elements Top Element=PHP 4.2 documentation PHP 4.2 documentation=Table of Contents,#Getting Started,#Language Reference Table of Contents=index.html Getting Started=Introduction, ... Introduction=introduction.html ... Language Reference=Basic syntax, ... Basic syntax=language.basic-syntax.html ... </literallayout> </informalexample> <para >Обратите внимание на наличие <literal >#</literal > перед <quote >Getting Started</quote > и <quote >Language Reference</quote >. Это говорит о том, что они содержат подэлементы. </para> <para >Table of Contents ссылается напрямую на файл (и следовательно отображается внизу структуры — каталоги сначала!). </para> <important> <para >Пробелы не влияют ни на что, но следите за символами & и <. Во всех файлах, основанных на &XML;, их лучше заменить на &amp; и &lt; соответственно. </para> </important> <para >Секция Context используется контекстно зависимой справки. Например, вы пишите скрипт &PHP; и вам нужно просмотреть документацию по функции <function >mysql_fetch_array</function >. Для этого вам нужно будет выделить её название и нажать <keycombo action="simul" >&Ctrl;<keycap >H</keycap > </keycombo >. При этом отобразится сразу информация по этой функции. </para> <variablelist> <varlistentry> <term >ContextList</term> <listitem> <para >Разделённый запятыми список контекстных пунктов, по которым будет доступна контекстная справка (для &PHP; - это его функции). </para> </listitem> </varlistentry> <varlistentry> <term >Ссылки на файлы контекстной справки</term> <listitem> <para >Формат: "контекстный пункт=страница html". Например: acos=function.acos.html </para> </listitem> </varlistentry> </variablelist> <para >Готовая версия <filename >docrc</filename >: </para> <informalexample> <literallayout >#Keywords for context help [Context] ContextList=abs,acos,acosh,addcslashes,addslashes,... abs=function.abs.html acos=function.acos.html acosh=function.acosh.html addcslashes=function.addcslashes.html addslashes=function.addslashes.html ... </literallayout> </informalexample> <para >Теперь сохраните ваш файл <filename >docrc</filename > в каталоге <filename class="directory" >$<envar >HOME</envar >/.kde/share/apps/quanta/doc</filename > или <filename class="directory" >$<envar >KDEDIR</envar >/share/apps/quanta/doc</filename > для локального или глобального использования соответственно. Затем создайте (под)каталог (как указано в файле <filename >docrc</filename >) в одном каталоге с <filename >docrc</filename > и скопируйте в него страницы &HTML;. </para> <para >Перезапустите &quantaplus; чтобы увидеть добавленную документацию. </para> <para >После того, как вы убедитесь, что она годится для того, чтобы ею поделиться с другими пользователями, отправьте её с файлом <filename >docrc</filename > в <ulink url="http://quanta.sf.net/main1.php?contfile=resource" >репозиторий &quantaplus;</ulink >. Вы не станете богатым, но вы сможете гордиться тем, что содействовали разработке самого лучшего инструмента веб-разработки в мире. </para> </sect1> <sect1 id="sharing-resources"> <title >Публикация ресурсов</title> <para >С &quantaplus; вы не будете жадным одиночкой, с её помощью можно делиться разными расширениями (пакетами DTEP, панелями инструментов с действиями, сценариями, шаблонами) друг с другом. Есть два способа этого: </para> <variablelist> <varlistentry> <term >Отправка по Email</term> <listitem ><para >Расширения (называемые также ресурсами) можно посылать по электронной почте. Для этого в нескольких (в т.ч. контекстных) меню есть пункт <guilabel >Отправить по E-Mail...</guilabel >. </para ></listitem> </varlistentry> <varlistentry> <term >Публикация на главном сервере</term> <listitem ><para >Если вы хотите поделиться своими расширениями со всеми, опубликуйте их в центральном хранилище. Присланные ресурсы проверяются и действительно публикуются только если они могут быть полезны другим. Для публикации, ресурс нужно подписать ключом GPG/PGP.</para> <para >О том, как загружать расширения с центрального хранилища, обратитесь к разделу <xref linkend="download-resources"/>.</para> <para >Во время передачи вам нужно будет ввести пароль к своему ключу GPG (он не будет сохранён), выбрав его перед этим. В диалоге <guilabel >Опубликовать</guilabel > заполните все поля (<guilabel >URL для просмотра</guilabel > можно оставить пустым) и нажмите <guilabel >OK</guilabel >.</para> <para >Данный диалог можно открыть из <menuchoice ><guimenu >DTD</guimenu ><guimenuitem >Передать пакет DTD (DTEP)...</guimenuitem ></menuchoice >, <menuchoice ><guimenu >Панели инструментов</guimenu ><guimenuitem >Передать панель инструментов...</guimenuitem ></menuchoice >, контекстных меню файлов и папок в деревьях <guilabel >шаблонов</guilabel > и <guilabel >сценариев</guilabel >. </para> </listitem> </varlistentry> </variablelist> </sect1> <sect1 id="download-resources"> <title >Загрузка расширений</title> <para >На сайте &quantaplus; есть специальный раздел, в котором хранятся расширения, не вошедшие в основной дистрибутив из-за большого размера или редкого использования, или же они были опубликованы после выхода послежней версии программы. Такие ресурсы содержат в себе механизм автоматической установки. Чтобы получить к ним доступ, воспользуйтесь пунктом меню <guilabel >Загрузить</guilabel >, его можно найти в разных местах, например в <menuchoice ><guimenu >DTD</guimenu ><guimenuitem >Загрузить пакет DTD (DTEP)...</guimenuitem ></menuchoice >, <menuchoice ><guimenu >Панели инструментов</guimenu ><guimenuitem >Загрузить панель инструментов...</guimenuitem ></menuchoice >, в контекстных меню пустых областей или в корнях деревьев <guilabel >Шаблоны</guilabel >, <guilabel >Сценарии</guilabel > и <guilabel >Документация</guilabel >. </para> <para >Перед непосредственной установкой расширения, &quantaplus; проверяет контрольную сумму и подпись. </para> <para> <caution ><para >Устанавливайте расширения, особенно панели инструментов и сценарии, только из проверенных источников!</para ></caution> </para> </sect1> <sect1 id="converting-dtd"> <title >Получение &DTEP; из DTD</title> <para >Добавление поддержки языков разметки, основанных на XML, автоматизировано, и пакет DTEP создаётся на основе DTD. </para> <para ><menuchoice ><guimenu >DTD</guimenu ><guimenuitem >Загрузить и конвертировать DTD...</guimenuitem ></menuchoice >, выберите файл <filename >.dtd</filename >, содержащий определение DTD, после чего вы увидите следующее окно: <mediaobject > <imageobject> <imagedata fileref="dtd-conversion.png" format="PNG"/> </imageobject> </mediaobject > </para> <para >Доступные поля:</para> <itemizedlist> <listitem ><para ><guilabel >Конечный каталог:</guilabel > папка, в которую будут записаны данные создаваемого &DTEP;, будет расположена в <filename ><envar >$KDEHOME</envar >/share/apps/quanta/dtep</filename >. </para> </listitem> <listitem ><para ><guilabel >Имя:</guilabel > строка определения DTD</para ></listitem> <listitem ><para ><guilabel >Отображаемое имя:</guilabel > имя, видимое пользователю.</para ></listitem> <listitem ><para ><guilabel >Строка описания !DOCTYPE:</guilabel > строка, которая должна присутствовать в теге !DOCTYPE, например HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"</para ></listitem> <listitem ><para ><guilabel >DTD URL:</guilabel > Адрес файла DTD</para ></listitem> <listitem ><para ><guilabel >Расширение по умолчанию:</guilabel > расширение, которое обычно имеют файлы с данным DTD</para ></listitem> <listitem ><para ><guilabel >Теги и атрибуты с учётом регистра:</guilabel > обычно включено для языков, основанных на XML</para ></listitem> <listitem ><para ><guilabel >Настроить DTEP после преобразования:</guilabel > запустить редактор &descriptionrc; после завершения преобразования, чтобы вы могли проверить/настроить созданный &DTEP;.</para ></listitem> </itemizedlist> </sect1> </chapter>