Файловая структура 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="№№½"
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: Подготовка эксперимента -->