VIII Международная конференция по электронным публикациям "EL-Pub2003"
8 - 10 октября 2003 года, г. Новосибирск, Академгородок,
(номер государственной регистрации 0320301032)
Тезисы докладов
Язык на основе XML для представления данных в информационной системе разработки и поддержки учебных ресурсов ЛЕММА
Новосибирский Государственный Университет (Новосибирск)
Важную роль в средах разработки учебных ресурсов играет язык представления данных. От языка
представления данных зависит быстрота разработки новых ресурсов, гибкость
системы, удобство использования и т.д.
В Мультимедиа центре НГУ разрабатывается информационная система разработки и поддержки образовательных
ресурсов ЛЕММА (Лекционная Мультимедиа Аудитория). Основными характеристиками
системы ЛЕММА являются:
- Информационная система обеспечивает средства эффективного
хранения, редактирования и обработки множества единиц однотипной
информации с возможностью организации отношений между типами и создания
сложных структурированных запросов.
- Независимость данных от контекста использования.
- Работа с документарными данными и данными слабоструктурированного
характера, например, форматированными текстами.
- Для документарных данных существуют связи ассоциативного характера
(гиперсвязи), например, от фрагмента текста одного элемента к другому.
- Модель данных доступна для модификации в течение всего жизненного
цикла ресурса.
- Интерфейсы к ресурсу интегрированы в модель данных.
- Поддержка множественных интерфейсов.
В состав всех версий системы
ЛЕММА входит язык представления данных на основе шаблонов. Когда пользователь
запрашивает данные элемента определенного типа, системой ЛЕММА подставляются
данные элемента в один из доступных шаблонов для этого типа данных, после
обработки шаблона создается документ, который и получает пользователь. Шаблоны
сгруппированы в интерфейсы.
При работе с предыдущими версиями языков в системе ЛЕММА возникали
несколько типичных задач, для которых не существовало удобного решения:
- В шаблонах отсутствовали
отделение запросов данных от представления этих данных. В предыдущих версиях языках
системы ЛЕММА запросы данных представляют собой "вкрапления" в результирующий
документ. Этот подход не дает необходимой гибкости при отображении данных.
- Для предыдущих версий языков невозможно реализовать
WYSIWYG-редакторы шаблонов. Так как шаблоны на
предыдущих версиях языков представлений ЛЕММА не имеют регулярной структуры,
которую можно описать с помощью какого-либо формального языка (например, DTD или XML-схемы),
то невозможно реализовать WYSIWYG-редактор шаблонов на этих
языках.
- Отсутствие нескольких представлений одного запроса данных.
- Отсутствие нескольких результирующих форматов.
В предыдущих версиях языков представлений в системе ЛЕММА используется
единственный результирующий формат шаблона - HTML. Этого явно недостаточно.
- Отсутствие сложной логики обработки результатов запроса данных.
Предыдущие версии языков предоставляют только самые
простые возможности обработки результатов запроса данных: перебор в цикле
элементов данных и простой условный оператор. Все остальные возможности
управления программным потоком реализуются с помощью языков сценариев на
клиентской стороне.
- Отсутствие последовательных
преобразований данных. В некоторых случаях требуется использовать последовательное
преобразование данных, то есть результат запроса данных преобразовать согласно
некоторым правилам в некоторый формат, а далее использовать следующий набор
правил.
Для решения описанных выше проблем в предыдущих
версиях языков предложено реализовать в системе ЛЕММА новый язык. Предложено
разделить все шаблоны на два типа: шаблоны запросов данных и шаблоны
представления данных.
Шаблоны запросов данных должны быть максимально
простыми и могут содержать следующие запросы:
- Запрос атрибутов элемента.
- Запрос ссылок на шаблоны элемента, blob-поля.
- Запрос элементов класса.
- Запрос списка классов.
- Запрос связанных элементов.
- Запросы на модификацию данных.
- Работа с cookies на серверной стороне.
Никаких других запросов шаблоны этого типа содержать
не должны. Соответственно, эти шаблоны будут иметь регулярную структуру и могут
быть описаны с помощью XML-схемы или DTD.
Синтаксический анализатор языка, обрабатывая шаблон этого типа, будет создавать
XML-документ, в котором содержатся все запрашиваемые данные. Эти XML-документы
(ответы синтаксического анализатора) тоже будут иметь регулярную структуру и
могут быть описаны с помощью XML-схемы или DTD.
К полученному XML-документу будут применяться
шаблоны второго типа, которые будут XSLT-преобразованиями.
XSLT-преобразования будут обеспечивать всю логику представления данных и
управление потоком преобразования (циклы, условные операторы и т.п.). Одному
запросу данных может соответствовать несколько XSLT-преобразований (каждое
может представлять результат в своем формате).
Опишем, как в предлагаемом языке решены проблемы,
существовавшие в предыдущих версиях языка.
- В шаблонах на предыдущих версиях языка отсутствует отделение запросов данных от представления этих
данных. С помощью выделения шаблонов двух типов (шаблоны запросы данных и шаблоны представления
данных) запросы данных отделяются от представления данных.
- Для предыдущих версий языка невозможно реализовать WYSIWYG-редакторы шаблонов.
Так как шаблоны запросов данных и XML-ответы синтаксического анализатора предлагаемого
языка имеют регулярную структуру, то существует принципиальная возможность
создать WYSIWYG-редактор для шаблонов запросов данных, а для
шаблонов представлений данных можно создать стандартные варианты шаблонов
представлений и выбирать один из существующих.
- Отсутствие в предыдущих
версиях языка нескольких представлений одного запроса данных. Разделение шаблонов языка
на два типа позволяет реализовать несколько представлений одного и того же
запроса данных.
- Отсутствие в предыдущих версиях языка нескольких результирующих форматов.
XSLT-преобразования позволяют использовать следующие результирующие форматы: TEXT, XML и HTML.
- Отсутствие в предыдущих версиях языка сложной логики обработки
результатов запроса данных. Для сложной обработки и управления потоком вывода можно использовать всю
мощь XSLT-преобразований. XSLT предоставляет возможности организации циклов,
сложных условных операторов, сортировку и фильтрацию данных, сложных запросы
данных XML-документа.
- Отсутствие в предыдущих версиях языка последовательных преобразований данных. При реализации языка
представлений заложена возможность использования нескольких последовательных XSLT-преобразований
XML-ответа сервера, в каждом XSLT-преобразовании будет
содержаться информация, какое XSLT-преобразование будет
следующим, либо после этого преобразования будет получен окончательный
документ.
Таким образом, предлагаемый язык решает некоторые из
задач, для которых не существует эффективного решения в предыдущих версиях
языка, обладает достаточной гибкостью, позволяет использовать возможности
программирования, доступные в XSLT-преобразованиях. Кроме
того, он не требует длительного времени для реализации, так как не требуется
реализовывать управление потоком вывода (будет использоваться готовое из XSLT).
Презентация доклада находится здесь.
Примечание. Тезисы докладов публикуются в авторской редакции
© 1996-2000, Институт вычислительных технологий СО РАН, Новосибирск
© 1996-2000, Сибирское отделение Российской академии наук, Новосибирск