Файловая структура xml-описаний

ВНИМАНИЕ!!! Все имена папок и файлов задаются только на латыни!!!

Общий раздел комплекса (поставляемый дистрибутив) включает следующие папки и файлы:

- проектор "START.exe";

- подключаемый к проектору основной исполнительный модуль control.swf;

- папка SOUND с дикторскими комментариями общесистемных действий оператора (без привязки к конкретным экспериментам);

- оболочка (Skin) органов управления видео, например, SteelExternalAll.swf.

- папка fscommand, включающая:

- сокет-сервер server.exe;

- папки **_LOG для множества log-файлов **_LOG/<name>_<session number>.xml, которые генерируются автоматически (при первой установке комплекса отсутствуют и поэтому с дистрибутивом не поставляются);

- папки **_XML – с управляющими файлами структур (MAIN и MAIN_interactive) и файлами состояний виртуальных объектов.

Входящие и модифицированные описания размещаются в fscommand/**_XML/, исходящие – в fscommand/**_LOG/.

Разметка управляющих и описательных текстов XML

Все xml-описания начинаются с «нулевого тега», характеризующего общее состояние объекта, к которому относится данное описание. В нулевом теге также может размещаться меню данного документа.

Управляющий файл **_XML/MAIN.xmlсодержит иерархические структуры инструкции, условные переходы, коды времени, содержание заголовков и текстовых полей, предупреждений:

<blocks>

<block

strat="1"

full_name="Космический эксперимент #"

short_name="КЭ #"

timeNorma="10"

timeAuto="5"

/>

<block

strat="1"

full_name="№№&#189;"

short_name="ВЫБОР РЕЖИМА КЭ"

condition="no"

condition_no="no"

timeNorma="10"

timeAuto="5"

text1=""

text2=""

head3="ПРИМЕЧАНИЕ:"

text3="Регистрация"

color3="red"

ill_name=""

sprav_text_name=""

sprav_ill_name=""

sound_name="Sound 1.mp3"

/>

</blocks>

В виде тегов оформляется только последовательность блоков. Порядок блоков в последовательности определяет очередность их воспроизведения по умолчанию (без условных переходов).

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

Рекомендуется присваиватьблокам действий короткие имена с глаголом в начале: "Открыть…", "Включить…". При этом следует избегать глагольно-отглагольных сочетаний:

"Выполнить монтаж" - неправильно;

"Смонтировать" - правильно.

Имена этапов, разделов следует начинать с существительного:

"Соединение…", "Включение…", и т.п.

Короткие имена блоков верхнего уровня вводить заглавными буквами:

"ПОДГОТОВКА…", "МОНТАЖ…" и т.п.

В процессе редактирования XML на внешних редакторах в теги могут вводиться дополнительные атрибуты: ID, ill_vid, referens_bd и проч., однако, при трансляции в поставляемый дистрибутив они должны быть удалены!!!

Это требование введено ввиду жесткой экономии итогового объема XML из-за ограничений в канале передачи «Земля-борт». По этой же причине РЕКОМЕНДУЕТСЯ при трансляции в поставляемый дистрибутив УДАЛЯТЬ ВСЕ ПУСТЫЕ АТРИБУТЫ.

Код типового тега главного управляющего файла MAIN.xml

Код тега имеет следующую структуру (полный возможный набор):

strat=1-4 //уровень вложения блока - только 1,2,3 и 4;

full_name="Нажать OPEN и открыть панель ЖКД" //полное имя блока - до 100 символов, в основном, прописных;

short_name="Нажать OPEN" //краткое имя блока - для надписей на кнопках; рекомендуется формировать лаконичные надписи до 65 заглавных или около 80 прописных знаков с пробелами короткими словами – для воспроизведения в блоках Дерева, которые имеют двустрочные текстовые поля с автоматическим переносом;

condition //адрес безусловного перехода по нажатию кнопки «Следующий» или условного перехода по нажатию кнопки «Да» при активных кнопках «Да»/«Нет»; принимает значения:

- "next"- простой безусловный переход на следующий блок;

- "###" - НОМЕР тега (0,1,2,3,…###), на который выполняется условный переход (ссылка);

- "end"- конец сессии – переход в кадр 4 на панель регистрации.

condition_no // адрес безусловного перехода по нажатию кнопки «Нет» при активных кнопках «Да»/«Нет»; принимает те же значения, что и condition:

- "next"- простой безусловный переход на следующий блок;

- "###" - НОМЕР тега (0,1,2,3,…###), на который выполняется условный переход (ссылка);

- "end"- конец сессии – переход в кадр 4 на панель регистрации.

Атрибутыcondition и condition_no могут также принимать три «пустых» значения: "", " ", "undefined" – см. ниже «Синтаксис атрибутов».

timeNorma="10"// норма времени исполнения пункта инструкции в секундах при интерактивной работе;

timeAuto="10"// время воспроизведение блока в секундах при автопрезентации или интерактивном режиме;

text1=""// текст правого поля действий - краткая копия пункта бумажной инструкции;

text2=" "//текст со спецсимволами – полная копия пункта бумажной инструкции;

head3="ПРИМЕЧАНИЕ:"// заголовок поля Предупреждений

text3="Регистрация обязательна для режимов 3 и 4"// текст поля Предупреждений

color3="red"// код цветового оформления заголовка поля предупреждений - может принимать значения:

"red" – белая надпись «ВНИМАНИЕ!» на красном фоне;

"yellow" – черная надпись «ВНИМАНИЕ!» на желтом фоне;

"white" - черная надпись «ПРИМЕЧАНИЕ» на белом фоне;

ill_name="" // имя главной иллюстрации; программа анализирует расширение атрибута ill_name (jpg, flv, swf, xml) по которому выбирается вид загрузки в кадрах 9-10.

sprav_doc_name="" // имя файла структуры справочного документа

sound_name="Sound 1.mp3" //звук действия.

Сценарист обязан следить, чтобы для данного действия не задавались одновременно графические / анимационные / алгоритмические / табличные иллюстрации, так как они воспроизводятся в общем центральном поле экрана.

Интерпретация событий по кнопкам навигации, ДА-НЕТ и атрибутам условий

Значения условных атрибутовcondition и condition_noпосле получения из текущего тега обрабатываются в ждущем кадре 10 по нажатию навигационных или логических кнопок (ДА-НЕТ) или по событиям интерактивного режима. В процессе интерпретации условий участвуют 4 кнопки:

condition condition_no DOWN DOWN2 ДА НЕТ
цифра цифра неактивна неактивна пункт по condition пункт по condition_no
цифра undefined пункт по condition пункт по condition неактивна неактивна
undefined undefined пункт +1 раздел+1 неактивна неактивна
‘next’ undefined пункт +1 раздел+1 неактивна неактивна
цифра ‘end’ неактивна неактивна пункт по condition конец
‘end’ цифра неактивна неактивна конец пункт по condition_no
‘end’ ‘end’ неактивна неактивна конец конец

ВНИМАНИЕ!!!Условием активности кнопок «Да»/«Нет» является обязательная определенность значений обоих атрибутов condition и condition_noи нахождение программы в основном рабочем кадре 10. Для группы кнопок навигации, наоборот, условием активности является неопределенность хотя бы одного из условных атрибутов. Таким образом, одновременная активность левой и правой групп взаимно исключается.

Активность кнопок обеспечивается невидимостью «туманных» накладок, признак их видимости / невидимости является разрешением для условных и прямых переходов по нажатию кнопок.

Синтаксис атрибутов

Должны выполняться следующие требования к xml-тексту:

- кавычки используются обязательно двойные;

- пробелы внутри имени атрибута, а также между именем и кавычками недопустимы;

- пустые (незаполненные) атрибуты также являются управляющими: система определяет атрибут как пустой по трем признакам:

1. можно вовсе удалить атрибут в данном блоке (выводится "undefined");

2. можно приравнять его к двум кавычкам без пробела ="" - рекомендуется;

3. можно приравнять его к двум кавычкам с одним пробелом =" ";

Другие варианты оформления пустого атрибута недопустимы!

Во вкладке Preferences FLASH CS*.*. обязательно устанавливается свойствоencoding="UTF-8"(!!!).

ВНИМАНИЕ!!!Чтобы можно было использовать в скрипте XML переносы, табуляцию и форматирование, которое обычно вносят редакторы и авторы для лучшей читаемости, в коде должно быть задано игнорирование пробелов (по умолчанию оно выключено), – его нужно помещать в скрипт сразу после кода создания xml -документа:

xml_data=new XML();

xml_data.ignoreWhite=true;

Иерархические группы блоков в XML-листинге рекомендуется разделять понятными, специфически оформленными комментариями:

<!-- Этап 1: Подготовка эксперимента -->

Наши рекомендации