Ключевые концепции
Обзор дизайна форм
Что такое XLSForm?
rtSurvey использует расширенную версию стандарта XLSForm для дизайна форм, предлагая мощные возможности для создания сложных опросов. Это руководство познакомит вас с ключевыми концепциями дизайна форм в rtSurvey — от базовой структуры XLSForm до расширенных функций, специфичных для rtSurvey.
С помощью XLSForm вы можете создавать формы в удобочитаемом формате, используя привычный инструмент Excel, что делает его доступным практически для всех. Этот стандарт обеспечивает удобный обмен и совместную работу над созданием форм.
Хотя XLSForms дружелюбны к начинающим, они также позволяют опытным пользователям создавать сложные формы.
rtSurvey предоставляет единообразный способ включения расширенных функций, таких как логика переходов, в формы для различных веб- и мобильных платформ сбора данных.
Структура XLSForm
XLSForm, как правило, состоит из двух основных листов:
- survey: Определяет структуру и содержание формы.
- choices: Задаёт варианты ответов для вопросов с множественным выбором.
Опциональный лист settings может предоставить дополнительные спецификации формы.
Важно отметить, что обязательные столбцы в листах survey и choices должны присутствовать для корректной работы формы. Необязательные столбцы в обоих листах обеспечивают дополнительный контроль над поведением каждой записи, но не являются обязательными.
Столбцы в книге Excel могут располагаться в любом порядке, необязательные столбцы могут оставаться пустыми. Однако важно использовать точный синтаксис и соглашения об именовании, указанные в документации XLSForm.
Лист survey
Лист survey — это место, где вы определяете структуру формы и её содержание. Каждая строка листа survey представляет вопрос или элемент формы. Следующие столбцы являются обязательными:
type: Определяет тип ввода, ожидаемого для вопроса.name: Задаёт уникальное имя переменной для этой записи. Имена должны начинаться с буквы или подчёркивания и могут содержать только буквы, цифры, дефисы, подчёркивания и точки. Имена чувствительны к регистру.label: Содержит фактический текст вопроса, отображаемый в форме.
| type | name | label |
|---|---|---|
| today | today | |
| select_one gender | gender | Пол респондента? |
| integer | age | Возраст респондента? |
Лист choices
Лист choices используется для указания вариантов ответов на вопросы с множественным выбором.
Каждая строка представляет вариант ответа. Следующие столбцы являются обязательными:
list_name: Группирует связанные варианты ответов.name: Задаёт уникальное имя переменной для варианта ответа.label: Отображает вариант ответа так, как он должен выглядеть в форме.
| list_name | name | label |
|---|---|---|
| gender | transgender | Трансгендер |
| gender | female | Женский |
| gender | male | Мужской |
| gender | other | Другое |
Столбцы, которые вы добавляете в книгу Excel (обязательные или необязательные), могут располагаться в любом порядке. Необязательные столбцы можно полностью опустить. Строки или столбцы могут быть пустыми для улучшения читаемости, но данные после 20 соседних пустых столбцов или строк на листе обрабатываться не будут. Всё форматирование .xlsx игнорируется.
При создании форм в Excel важно использовать точный синтаксис. Например, если вы напишете Choices или choice вместо choices, форма не будет работать.
Лист settings
Лист settings необязателен, но позволяет указать метаданные и поведение уровня формы. Общие столбцы в листе settings:
| Столбец | Описание |
|---|---|
| form_title | Заголовок формы, отображаемый пользователям |
| form_id | Уникальный идентификатор формы, используемый в управлении данными и вызовах API |
| default_language | Код языка по умолчанию для многоязычных форм (например, ’en’ для английского) |
| version | Номер версии формы, полезный для отслеживания изменений |
| instance_name | Выражение для генерации уникального имени каждой отправки формы |
| generation | Целое число, обозначающее поколение формы. Увеличивайте при структурных изменениях |
| family | Идентификатор для группировки связанных форм при структурных изменениях |
Лист settings в rtSurvey может также включать дополнительные конфигурации, специфичные для расширенных функций rtSurvey. Полный список поддерживаемых настроек смотрите в документации rtSurvey.
Ключевые компоненты листа survey
Лист survey — основа дизайна вашей формы. Вот обзор его ключевых компонентов:
| Компонент | Описание |
|---|---|
| type | Определяет тип вопроса (например, text, integer, select_one) |
| name | Уникальный идентификатор вопроса |
| label | Текст, отображаемый респонденту |
| hint | Дополнительное руководство для респондента |
| appearance | Изменяет способ отображения вопроса |
| relevant | Определяет, когда должен задаваться вопрос (логика переходов) |
| constraint | Проверяет ответ |
| calculation | Вычисляет значения на основе других ответов |
| required | Указывает, обязателен ли ответ на вопрос |
Каждый из этих компонентов играет важную роль в создании эффективных опросов. Нажмите на ссылки в столбце «Подробный раздел», чтобы узнать больше о каждом компоненте.
Типы вопросов
XLSForm поддерживает несколько типов вопросов. Вот некоторые из вариантов, которые можно ввести в столбец type в листе survey вашего XLSForm:
| Тип вопроса | Ввод ответа |
|---|---|
| integer | Ввод целого числа. |
| decimal | Ввод десятичного числа. |
| range | Ввод диапазона (включая рейтинг) |
| text | Свободный текстовый ответ. |
| select_one [options] | Вопрос с выбором одного ответа из нескольких вариантов. |
| select_multiple [options] | Вопрос с выбором нескольких ответов из предложенных вариантов. |
| select_one_from_file [file] | Выбор одного ответа из внешнего файла CSV. |
| select_multiple_from_file [file] | Выбор нескольких ответов из внешнего файла CSV. |
| rank [options] | Вопрос на ранжирование: упорядочить список. |
| note | Отображение примечания на экране, ввод не принимается. |
| geopoint | Сбор одной GPS-координаты. |
| geotrace | Запись линии из двух и более GPS-координат. |
| geoshape | Запись полигона из нескольких GPS-координат; последняя точка совпадает с первой. |
| date | Ввод даты. |
| time | Ввод времени. |
| dateTime | Принимает ввод даты и времени. |
| image | Сделать фото или загрузить файл изображения. |
| audio | Сделать аудиозапись или загрузить аудиофайл. |
| background-audio | Аудио записывается в фоновом режиме при заполнении формы. |
| video | Сделать видеозапись или загрузить видеофайл. |
| file | Общий файловый ввод (txt, pdf, xls, xlsx, doc, docx, rtf, zip) |
| barcode | Сканирование штрих-кода. |
| calculate | Выполнить вычисление; см. раздел «Вычисления» ниже. |
| acknowledge | Подтверждение, устанавливающее значение «OK» при выборе. |
| hidden | Поле без связанного элемента UI для хранения константы |
| xml-external | Добавляет ссылку на внешний XML-файл данных |
Метки
Метки — это текст, отображаемый респондентам для каждого вопроса.
- Базовое использование: В столбце
labelвведите текст вопроса. - Несколько языков: Используйте дополнительные столбцы, такие как
label::Englishиlabel::French, для многоязычных опросов. - Форматирование: rtSurvey поддерживает базовое HTML-форматирование в метках.
Пример:
| type | name | label | label::French |
|------|------|-------|---------------|
| text | name | Как вас зовут? | Quel est votre nom? |
Подсказки
Подсказки предоставляют дополнительное руководство респондентам без перегрузки основного текста вопроса.
- Использование: Добавляйте подсказки в столбец
hint. - Видимость: Подсказки обычно отображаются под основным текстом вопроса.
- Многоязычность: Как и метки, подсказки можно указывать для нескольких языков с использованием столбцов
hint::Language.
Пример:
| type | name | label | hint |
|------|------|-------|------|
| integer | age | Сколько вам лет? | Введите ваш возраст в годах |
Внешний вид
Столбец appearance в rtSurvey позволяет настраивать отображение вопросов.
- Стандартные варианты: Включают ‘multiline’ для текста, ‘horizontal’ для вопросов с выбором.
- Расширения rtSurvey:
- Ввод времени: Различные варианты отображения часов (например,
inline,inline-1line) - Настройка цвета: Функция
colors()для изменения цвета иконок
- Ввод времени: Различные варианты отображения часов (например,
Пример:
| type | name | label | appearance |
|------|------|-------|------------|
| text | time | Введите время | inline-[%H:%M] |
Условие отображения
Столбец relevant реализует логику переходов, определяя, когда должен отображаться вопрос.
- Синтаксис: Используйте выражения XPath для определения условий.
- Переменные: Ссылайтесь на имена других вопросов с помощью
${question_name}.
Пример:
| type | name | label | relevant |
|------|------|-------|----------|
| text | allergies | Перечислите аллергии | ${has_allergies} = 'yes' |
Обязательность
Столбец required указывает, обязателен ли ответ на вопрос.
- Базовое использование: Используйте ‘yes’ или ’true’ для обязательного вопроса.
- Расширенное: Можно использовать выражения для условной обязательности.
Пример:
| type | name | label | required |
|------|------|-------|----------|
| text | email | Адрес электронной почты | yes |
Повторения
Повторения позволяют отвечать на группу вопросов несколько раз.
- Использование: Используйте строки
begin repeatиend repeatдля определения повторяющейся группы. - Именование: Дайте каждой группе повторений уникальное имя.
Пример:
| type | name | label |
|------|------|-------|
| begin repeat | household_member | Член домохозяйства |
| text | member_name | Имя |
| integer | member_age | Возраст |
| end repeat | | |
Медиа
rtSurvey поддерживает различные типы медиа в опросах, включая изображения, аудио и видео.
- Типы вопросов: Используйте ‘image’, ‘audio’ или ‘video’ в столбце type.
- Медиа в метках: Ссылайтесь на медиафайлы в метках с помощью HTML-тегов.
Пример:
| type | name | label |
|------|------|-------|
| image | house_photo | Сфотографируйте дом |
| note | | <img src="logo.jpg" /> Добро пожаловать в опрос |
Только для чтения
Поля только для чтения отображают информацию без разрешения пользовательского ввода.
- Использование: Добавьте ‘readonly’ в столбец
appearance. - Вычисления: Часто используется с типом calculate для отображения вычисленных значений.
Пример:
| type | name | label | appearance | calculation |
|------|------|-------|------------|-------------|
| calculate | bmi | ИМТ | readonly | ${weight} / (${height} * ${height}) |
Расширения rtSurvey
rtSurvey расширяет стандарт XLSForm, поддерживая дополнительные возможности, такие как grid layout, html format и множество новых виджетов.
Сетчатый макет
rtSurvey позволяет форме имитировать вид традиционных бумажных опросов, компактно размещая несколько вопросов в одной строке.