Суть проблемы


В системах электронного обучения (СЭО), используемых в образовательных учреждениях, часто требуется помимо подключения электронного курса к СЭО, также импортировать его отдельные компоненты для формирования единых банков образовательных ресурсов. Такие банки используются в образовательном процессе, в том числе для создания междисциплинарных спецкурсов, итоговых тестирований по всему периоду обучения. Как правило, это в первую очередь тестовые задания, изображения, мультимедийные компоненты. Некоторые элементы контента, в частности тестовые задания, созданные без использования машиночитаемых форматов (CSV, JSON, XML, XLS), не поддаются эффективному автоматизированному импорту в СЭО. Особенно это касается HTML/CSS/JavaScript, применяемых в контейнере для электронных курсов и публикаций ePUB. Для решения этой задачи автором предлагается использовать описания тестов и отдельных тестовых вопросов в составе курса в машиночитаемом формате XML в соответствии со спецификацией IMS Question and Test Interoperability v.2.2 (IMS QTI).


Пару слов о ePUB v.3


ePUB версии 3, разработан ассоциацией IDPF и является стандартом для обмена и дистрибуции электронных публикаций. ePUB получил широкое распространение среди издателей электронных учебников и курсов. Формат поддерживается на большинстве мобильных платформ, и лег в основу ряда других подобных форматов, например, ibooks компании Apple.


Рисунок 1. Структура EPUB-контейнера
image


ePUB активно развивается и стал популярен среди издательств, благодаря тому, что он изначально создавался для электронных книг и представляет собой отчуждаемый пакет, который удобно распространять и контролировать соблюдение лицензионных соглашений через DRM-системы.
На формат также обратили внимание разработчики E-Learning систем (LMS), потому, что с одной стороны, с появлением ePUB версии 3, в формате предусмотрена поддержка мультимедийных объектов — поддерживаются HTML5, CSS, JavaScript, SVG, аудио, видео, растровые изображения и другие ресурсы, в том числе 3D объекты, что позволяет  реализовать любой тип электронных образовательных ресурсов, а с другой — пришедший в 2013 году на смену устаревшему SCORM, стандарт xAPI (aka Tin Can) позволяет отправлять данные о действиях обучаемого прямо из ePUB без непосредственного участия LMS.


В основе ePUB — Open Packaging Format (OPF – открытый формат упаковки), это zip-контейнер, содержащий гипермедийный контент в формате HTML/XHTML и xml-файлы с описаниями. Структура ePUB представлена на рисунке 1.


Гипермедийный контент находится в каталоге OEBPS, название каталога обусловлено историческими причинами – так назывался формат электронных публикаций, предшествовавший формату ePUB.
Каталог  META-INF содержит общие файлы описания содержимого контейнера. На рис. 2 видно, что внутри контейнера ePUB находится обычная иерархическая файловая структура, напоминающая  структуру HTML-сайта. Действительно,  содержание ePUB v.3 можно сравнить с офлайн версией веб-сайта или автономным веб-приложением, где языками программирования, разметки и визуализации является связка языков HTML5/CSS/JavaScript.


Сплошной оранжевой заливкой на рис. 1 выделены добавленные в ePUB элементы, повышающие интероперабельность формата. Это библиотеки xAPI (Tin Can) и коды на языке JavaScript, содержащиеся в каталоге xAPI JS libs, а также дополнительные xml-описания в формате IMS QTI, которые далее будут рассмотрены более подробно.


Добавляем IMS QTI в ePUB


Чтобы добавить описания тестов и тренажеров согласно спецификации IMS QTI, каждый ePUB контейнер должен содержать следующие xml-файлы:


  • 1 общий для ePUB контейнера файл imsmanifest.xml, который должен находиться в корневом каталоге первого уровня META-INF. Imsmanifest.xml должен содержать ссылки на все другие файлы контейнера, относящиеся к спецификации IMS QTI. Файл описывает общую структуру и взаимосвязь интерактивных элементов (тестов и тренажеров) электронного курса.
  • Каждый тест и тренажер должен содержать в себе по одному файлу qti_xxxxx.xml, описывающих его  структуру и содержание заданий, правильные и неправильные ответы, их веса при расчете итогового балла, ссылки на иллюстрации и другие вспомогательные материалы, используемые в вопросах, а также настройки и логику задания. Данные файлы должны храниться в корневых подкаталогах, содержащих тесты и тренажеры (на рис.1 — test1…testX). Ссылки на описанные файлы должны присутствовать в файле метаинформации, содержащем описание ePUB контейнера content.opf с указанием типа: media-type= "text/xml".

Спецификация IMS QTI v2.2  позволяет описать большинство используемых в электронных курсах типов вопросов. Спецификация выделяет определенные группы, среди которых наиболее часто используются:


  • Вопрос типа «Множественный выбор с единственным правильным вариантом ответа» с иллюстрациями или без.
  • Вопрос типа «Множественный выбор с несколькими правильными вариантами ответа» с иллюстрациями или без.
  • Задание на сопоставление «Установите соответствие» текст-текст, текст-изображение, изображение-изображение, текст-иной объект (ячейка, графа и т.п.)

Для каждого типа в стандарте IMS QTI существует определенный набор XML тегов и особенностей синтаксиса для описания содержания и логики задания (вопроса). Эти теги и синтаксис будут рассмотрены ниже, в том числе на конкретных примерах.


Общий файл пакета imsmanifest.xml


Общая структура файла imsmanifest.xml согласно спецификации представлена на рисунке 2:


Рисунок 2. Общая структура файла imsmanifest.xml
image


Для большинства электронных курсов некоторые элементы файла imsmanifest.xml, предусмотренные спецификацией, являются избыточными и не используются.


Ниже в листинге 1 для примера приведены выдержки из файла imsmanifest.xml относящегося к электронному курсу по биологии. Курс содержит тесты (тестовые вопросы) и тренажеры. В контексте данного электронного курса «тест» или «тестовый вопрос» являются элементами проверки знаний, и результат их выполнения отправляется в базу данных. Тренажер, хотя по форме и может быть похож на тестовый вопрос, имеет своей целью через многократное прохождение задания закрепить материал, помочь учащемуся запомнить правильный ответ. Данные о прохождении учащимся заданий тренажеров не попадают в общую ведомость успеваемости.


Листинг 1. Файл imsmanifest.xml


<?xml version="1.0" encoding="UTF-8"?>
<manifest identifier="ePUB_id"
    version="1.1"
    xmlns="http://www.imsproject.org/xsd/imscp_rootv1p1p2"
    xmlns:adlcp="http://www.adlnet.org/xsd/adlcp_rootv1p2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.imsproject.org/xsd/imscp_rootv1p1p2 imscp_rootv1p1p2.xsd http://www.imsglobal.org/xsd/imsmd_rootv1p2p1 imsmd_rootv1p2p1.xsd http://www.adlnet.org/xsd/adlcp_rootv1p2 adlcp_rootv1p2.xsd">
    <metadata>
      <uname>ИМЯ_УРОКА</uname>
      <version>1.2 (ВЕРСИЯ УРОКА)</version>
      <filename>ИМЯ_ePUB_файла</filename>
   </metadata>
   <organizations>
      <organization  type="tutor">
         <title>Тренажеры</title>
         <item identifier="tutor1" refnumber="2"> 
              <title>Живой организм: строение и изучение 1</title>
         </item>         
        <!--------- Другие элементы item ---------->
         <item identifier="tutor5" refnumber="8">
              <title>Живой организм: строение и изучение 7</title>
         </item>
      </organization>
      <organization  type="quiz">
         <title>Тесты</title>
         <item identifier="test1" refnumber="9">
              <title>Живой организм: строение и изучение 1</title>
         </item>         
        <!--------- Другие элементы item ---------->
         <item identifier="test7" refnumber="11">
              <title>Живой организм: строение и изучение 3</title>
         </item>
      </organization>
   </organizations>
   <resources>
      <resource identifier="tutor1" type="tutor">
               <file href="/OEBPS/tutor1/qti_tutor1.xml"/>
      </resource>
        <!--------- Другие элементы resource ---------->
      <resource identifier="test001" type="quiz">
               <file href="/OEBPS/test1/qti_test1.xml"/>
      </resource>
   </resources>
</manifest>

Файл imsmanifest.xml, как и любой xml файл начинается прологом, затем следуют мета-описания (тег <metadata>), где указывается имя курса, версия, имя ePUB файла. Далее следуют описания общей структуры интерактивных тестов и тренажеров (тег <organizations>) и ссылки на файлы qti_xxxxx.xml, содержащие подробное описание каждого отдельного теста или тестового вопроса (тег <resourses>).


Файлы отдельных тестов или тестовых вопросов qti_xxxxx.xml


В рассматриваемом примере ePUB, тесты и тренажеры хранятся как объекты в одноименных подкаталогах (например test1, test2…testX, tutor1, tutor2…tutorX). Имена тестов и тренажеров имеют уникальные значения в рамках ePUB контейнера значения, и они же используются во всех xml файлах описаний в качестве идентификаторов.


Для соответствия спецификации и обеспечения возможности автоматического импорта структуры и содержания тестов и тренажеров, каждый тест или тренажер должен комплектоваться файлом вида qti_xxxxx.xml, где ххххх – имя идентификатора и одноименного каталога, содержащего данный тест или тренажер.


Файлы описаний структуры тестов и тренажеров также должны быть перечислены в файле метаинформации content.opf с указанием media-type="text/xml".


Примеры тестовых вопросов и листинги файлов qti_xxxxx.xml, содержащих их описания


Вопрос «Множественный выбор с единственным правильным вариантом ответа»

Рисунок 3. Вопрос «Множественный выбор с единственным правильным вариантом ответа»
image


Вопрос изображен на рисунке 3, в структуре ePUB-контейнера он имеет имя test1. В данном вопросе учащемуся предоставляется возможность ответить на вопрос и ознакомиться с правильным вариантом ответа в случае неудачной попытки. Вопрос сопровождается файлом описания его структуры, с указанием правильного ответа, в соответствии со спецификацией IMS QTI v2.2 – qti_test1.xml (листинг 2).


Листинг 2. Файл qti_test1.xml


<?xml version="1.0" encoding="UTF-8"?>
<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p1 http://www.imsglobal.org/xsd/imsqti_v2p1.xsd"
    identifier="choice" title="Живой организм: строение и изучение 1" adaptive="false" timeDependent="false">
    <responseDeclaration identifier="RESPONSE" cardinality="single" baseType="identifier">
        <correctResponse>
            <value>ChoiceA</value>
        </correctResponse>
    </responseDeclaration>
    <itemBody>
        <p>Выберите правильный ответ.</p>
        <choiceInteraction responseIdentifier="RESPONSE" shuffle="false" maxChoices="1">
            <prompt>Животные, также как и растения, </prompt>
            <simpleChoice identifier="ChoiceA">растут и развиваются</simpleChoice>
            <simpleChoice identifier="ChoiceB">растут в течение всей жизни</simpleChoice>
            <simpleChoice identifier="ChoiceC">развиваются, но не растут</simpleChoice>
            <simpleChoice identifier="ChoiceD">растут до определенного возраста</simpleChoice>
        </choiceInteraction>
    </itemBody>
</assessmentItem>

Данный XML-файл, позволяет при импорте получить информацию о типе вопроса и структуре содержащегося в вопросе задания, правильных ответах и их количестве. В рассмотренном примере тег <correctResponse> в сочетании с тегом <value> задает правильный ответ.


Вопрос «Множественный выбор с несколькими правильными вариантами ответа»

Рисунок 4. Вопрос «Множественный выбор с несколькими правильными вариантами ответа»
image


Вопрос изображен на рисунке 4. В данном вопросе учащемуся предоставляется возможность выбрать несколько ответов, каждый из которых имеет положительный или отрицательный вес и влияет на результирующий балл по вопросу. Вопрос в структуре ePUB-контейнера имеет имя и каталог test2 и сопровождается файлом описания его структуры – qti_test2.xml, в котором также указаны пути к иллюстрациям внутри ePUB-контейнера (листинг 3).


Листинг 3. Файл qti_test2.xml


<?xml version="1.0" encoding="UTF-8"?>
<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2  http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd"
    identifier="choiceMultiple" title="Живой организм: строение и изучение 1" adaptive="false" timeDependent="false">
    <responseDeclaration identifier="RESPONSE" cardinality="multiple" baseType="identifier">
        <correctResponse>
            <value>S</value>
            <value>P</value>
            <value>M</value>
        </correctResponse>
        <mapping lowerBound="0" upperBound="3" defaultValue="-3">
            <mapEntry mapKey="S" mappedValue="1"/>
            <mapEntry mapKey="P" mappedValue="1"/>
            <mapEntry mapKey="M" mappedValue="1"/>
            <mapEntry mapKey="K" mappedValue="-1"/>
            <mapEntry mapKey="G" mappedValue="-1"/>
            <mapEntry mapKey="L" mappedValue="-1"/>
        </mapping>
    </responseDeclaration>
    <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/>
    <itemBody>
        <choiceInteraction responseIdentifier="RESPONSE" shuffle="true" maxChoices="0">
            <prompt>Выберите из предложенных рисунков те, на которых изображены живые организмы</prompt>
            <simpleChoice identifier="K" fixed="false">Комета
                <p><img src="../k.png" alt="Комета"/></p></simpleChoice>
            <simpleChoice identifier="S" fixed="false">Сосна
                <p><img src="../s.png" alt="Сосна"/></p></simpleChoice>
            <simpleChoice identifier="G" fixed="false">Гейзер
                <p><img src="../g.png" alt="Гейзер"/></p></simpleChoice>
            <simpleChoice identifier="L" fixed="false">Тающий лед
                <p><img src="../l.png" alt="Тающий лед"/></p></simpleChoice>
            <simpleChoice identifier="P" fixed="false">Подберезовик
                <p><img src="../p.png" alt="Подберезовик"/></p></simpleChoice>
            <simpleChoice identifier="M" fixed="false">Мох сфагнум
                <p><img src="../m.png" alt="Мох сфагнум"/></p></simpleChoice>
        </choiceInteraction>
    </itemBody>
</assessmentItem>

В листинге 3 в тегах <correctResponse> задаются правильные ответы вопроса, а также тегами <mapping> задаются веса для каждого правильного и неправильного ответов. Поскольку правильных ответов может быть несколько, то общий балл за вопрос будет равен сумме правильных и неправильных ответов. Таким образом, выбирая только правильные ответы, учащийся повышает свой итоговый балл за задание. Напротив, если учащийся выбирает неправильный ответ, которому тегом <mapEntry> назначен отрицательный вес (-1), то общая сумма уменьшается, что ухудшает итоговый результат. В теге <mapping> также задаются максимально возможный верхний (upperBound) и минимально возможный нижний (lowerBound) балл за задание в целом, эти значения не могут быть преодолены, не зависимо от итоговой вычисленной суммы правильных или неправильных ответов. В данном примере lowerBound = 0, это означает, что даже если учащийся выберет только неправильные ответы (-1-1-1= -3), то результирующий балл за задание будет = 0. Каждому ответу тегом <mg> сопоставлена определенная иллюстрация из числа изображений хранящихся в ePUB-контейнере.


Вопрос на сопоставление «Установите соответствие»

Рисунок 5. Вопрос на сопоставление «Установите соответствие»
image


Вопрос изображен на рисунке 9, в структуре ePUB-контейнера имеет имя test3. Учащийся должен сопоставить пары значений, в данном случае – правильно сопоставить иллюстрации и подписи к ним. За каждое правильно составленное соответствие начисляется определенный балл, который суммируется как итоговый балл за задание. Некорректные соответствия не учитываются, штрафы не назначаются. Вопрос сопровождается файлом описания – qti_ test3.xml (листинг 4), в котором также содержатся ссылки на иллюстрации в ePUB-контейнере.


Листинг 4. Файл qti_test3.xml


<?xml version="1.0" encoding="UTF-8"?>
<assessmentItem xmlns="http://www.imsglobal.org/xsd/imsqti_v2p2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.imsglobal.org/xsd/imsqti_v2p2  http://www.imsglobal.org/xsd/qti/qtiv2p2/imsqti_v2p2.xsd"
    identifier="associate" title="Живой организм: строение и изучение 3" adaptive="false" timeDependent="false">
    <responseDeclaration identifier="RESPONSE" cardinality="multiple" baseType="pair">
        <correctResponse>
            <value>CAT R</value>
            <value>FROG M</value>
            <value>PUMA S</value>
            <value>BIRD N</value>
        </correctResponse>
        <mapping defaultValue="0">
            <mapEntry mapKey="CAT R" mappedValue="1"/>
            <mapEntry mapKey="FROG M" mappedValue="1"/>
            <mapEntry mapKey="PUMA S" mappedValue="1"/>
            <mapEntry mapKey="BIRD N" mappedValue="1"/>
        </mapping>
    </responseDeclaration>
    <outcomeDeclaration identifier="SCORE" cardinality="single" baseType="float"/>
    <itemBody>
        <associateInteraction responseIdentifier="RESPONSE" shuffle="true" maxAssociations="4">
            <prompt>Установите соответствие</prompt>
            <simpleAssociableChoice identifier="CAT" matchMax="1"><p><img src="../c.png" alt="Кошка"/></p></simpleAssociableChoice>
            <simpleAssociableChoice identifier="FROG" matchMax="1"><p><img src="../f.png" alt="Лягушка"/></p></simpleAssociableChoice>
            <simpleAssociableChoice identifier="PUMA" matchMax="1"><p><img src="../p.png" alt="Пума"/></p></simpleAssociableChoice>
            <simpleAssociableChoice identifier="BIRD" matchMax="1"><p><img src="../b.png" alt="Птица"/></p></simpleAssociableChoice>
            <simpleAssociableChoice identifier="R" matchMax="1">Раздражительность</simpleAssociableChoice>
            <simpleAssociableChoice identifier="M" matchMax="1">Размножение</simpleAssociableChoice>
            <simpleAssociableChoice identifier="N" matchMax="1">Питание</simpleAssociableChoice>
            <simpleAssociableChoice identifier="S" matchMax="1">Движение</simpleAssociableChoice>
        </associateInteraction>
    </itemBody>
</assessmentItem>

В рассмотренном примере внутри тегов <correctResponse> задаются правильные пары соответствий, а внутри тегов <mapping> задаются баллы, которые будут назначены для каждого правильно составленного соответствия. Изображения и фразы, которые должны им сопоставляться задаются тегами <simpleAssociableChoice>.


Заключение


В статье рассмотрены вопросы применения спецификаций и стандартов, которые позволяют повысить интероперабельность электронного курса. Рассмотренные в статье примеры являются базовыми и могут быть усложнены в зависимости от реальных требований. Для этого требуется обратиться к документации IMS QTI Implementation Guide.

Поделиться с друзьями
-->

Комментарии (8)


  1. iig
    09.04.2017 20:59

    Что мешает учащемуся открыть этот xml в xml-редакторе и посмотреть правильные ответы?


    1. adadurov
      10.04.2017 11:00

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


  1. Sergioo
    10.04.2017 09:37

    Спасибо за статью.
    Вопрос автору. Вы пользуетесь этой технологией в продакшне?
    Если да — то как создаете элементы курсов? Какой-то фреймворк, редактор?


    1. adadurov
      10.04.2017 11:35

      По этой технологии мы работаем с поставщиками курсов. У каждого поставщика свой определенный WorkFlow, подробностями которого они в деталях не делятся. У кого-то это Indesign + свои разработки на Java, которые автоматизируют создание тестов и привязывают xAPI функции. На выходе из набора различных ресурсов (видео, текст, тесты) компилируется ePUB.
      Кто-то готовит курсы в других редакторах поддерживающих экспорт в ePUB, и вручную заполняет xml-файлы к ним. В отдельном случае коллегами дорабатывалась OpenSource программа Sigil для работы с ePUB, и с её помощью автоматизировались некоторые операции.


  1. Livs43
    10.04.2017 09:37

    Спутник вроде бы подобное использует.


  1. goodnickoff
    14.04.2017 10:41

    Первый раз встречаю упоминание о IMS QTI на русскоязычном ресурсе. Хотя в e-Learning это очень распространенный стандарт описания тестов, опросов и т.д. для систем контроля и оценки знаний.
    В нашей команде есть разработчики, вносящие большой вклад в разработку и развитие этого стандарта.
    Мы используем QTI в рамках Open Source проекта https://www.taotesting.com


    Я сейчас как раз работаю над реализацией общения нашего приложения с Learning Record Stores (LRSs) посредством xAPI. Так что статья для меня оказалась вдвойне актуальна.


    1. adadurov
      17.04.2017 12:26

      Спасибо за комментарий, мой ответ ниже…


  1. adadurov
    17.04.2017 12:23

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

    Для организаторов e-learning до сих пор существует проблема получения информации об образовательной деятельности учащихся за пределами LMS (на порталах вебинаров, сайтах библиотек, симуляторах). Вынесение статистической базы достигнутых результатов обучения за пределы LMS решает эту проблему, что как раз реализовано в xAPI через LRS.

    Такое решение становится особенно актуально для крупных организаций федерального уровня с разветвленной филиальной сетью, где в каждом филиале есть своя система электронного обучения. Для них создание единой базы статистики обучения + портал мониторинга, как интерфейс к этой базе — наиболее эффективное решение. СЭО отправляют данные в единую БД, а все филиалы и центральный офис смотрят статистику в своем разделе на портале.
    image