ПОСТРОЕНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ НА ОСНОВЕ ИНТЕРНЕТ-ТЕХНОЛОГИЙ
Дьяченко А. В., Манжула В. Г., Попов А. Э., Семенихин И. Н., Толстобров А. П.,
Огромное количество электронных версий учебно-методических материалов в образовательных учреждениях России представлено в формате Microsoft Word. Это объясняется широкой популярностью приложений Microsoft Office среди пользователей и простотой освоения и использования данного программного продукта. Поэтому весьма актуальной является задача автоматизации процесса конвертирования образовательного контента из представления Microsoft Word в формат Moodle.
Документ Microsoft Word представляет собой специализированное СОМ-ориентированное хранилище данных - структурированное хранилище (Structured Storage), организованное по иерархическому принципу. Документ может содержать различные типы данных: структурированный текст, графику, математические выражения, организационные диаграммы и т.д.
Концепция структурированного хранилища является составной частью современной парадигмы программирования на основе модели компонентных объектов (Component Object Model - COM). По сути, структурированное хранилище - это технология объединения в одной логической единице хранения данных (файле) объектов с различной природой и свойствами. Технология СОМ предлагает стандартную реализацию концепции структурированного хранилища в виде составного файла (Compound File): файловая система внутри файла. СОМ-хранилище представляет собой иерархическую структуру коллекций объектов двух типов: хранилищ (Storage) и потоков (Stream), которым в традиционной файловой системе соответствуют каталоги и файлы. Данный подход позволяет существенно снизить издержки хранения в одном файле объектов различной природы.
Объект-хранилище, аналогично каталогу файловой системы, может содержать потоки и другие хранилища. Фактически это означает, что хранилище содержит записи с информацией о местоположении, размере и других свойствах размещенных в нем объектов-потоков и других хранилищ. Объект-поток является последовательностью байтов, интерпретация которых, как и для обычного файла, зависит от типа потока (файла). Составной файл обязательно должен содержать корневое хранилище (Root Storage), которое, в свою очередь содержит как минимум один объект-поток, представляющий данные о самом хранилище (Native Stream), рис. 5. Кроме этого, корневое хранилище содержит имя составного файла в нотации файловой системы, к которой он принадлежит.
Каждый объект документа в составном файле представлен отдельным хранилищем, которое может содержать:
Таким образом, глубина вложенности объектов в хранилище теоретически не ограничена, документ может быть сколь угодно сложным.
В общем случае технология СОМ предоставляет набор средств уровня API для работы с произвольными структурированными хранилищами. Так, объекты-хранилища и объекты-потоки поддерживают стандартный набор интерфейсов:
основные группы функций:
Конкретные реализации СОМ-приложений, использующие структурированные хранилища, как правило, имеют собственные библиотеки объектов-оберток API-интерфейса. Так, Microsoft Word предоставляет в распоряжение прикладных программ сотни объектов. Отношения наследования и агрегации объединяют эти объекты в иерархическую структуру - объектную модель Microsoft Word.
На рис. 6 представлен концептуальный уровень объектной модели Microsoft Word, который включает в себя шесть базовых объектов:
Рис. 6. Объектная модель Microsoft Word
К особенностям модели в первую очередь относится наличие множественных перекрытий. Так, Document и Selection являются компонентами объекта Application, однако Document так же является свойством объекта Selection. Среди свойств Document и Selection имеются объекты Bookmark и Range. Перекрытия обеспечивают множественный доступ к объектам модели. Например, операция форматирования применима к объекту Range, который может быть определен как текущее выделение (Selection), абзац, раздел либо документ целиком.
Объект Application представляет приложение Microsoft Word и содержит все остальные объекты модели. Свойства и методы Application дают возможность полностью контролировать среду приложения Word.
Базовым компонентом, обеспечивающим доступ и манипулирование документами, является объект Document. В пространстве имен сборки Office Primary Interop для операционной среды .NET этот объект имеет вид:
Microsoft.Office.Interop.Word.Document
Объект Document содержит непосредственно данные документа (текст, графику и т.д.), сведения о структуре и форматировании документа. Структурные компоненты документа (абзацы, разделы, страницы, колонтитулы, стили и т.д.) представлены коллекциями экземпляров соответствующих свойств объекта. При создании нового или загрузке существующего документа Word создает новый экземпляр объекта Document и помещает его в коллекцию Documents объекта Application. Коллекция поддерживает указатель активного документа, который всегда представлен значением свойства ActiveDocument объекта Application.
Объект Selection представляет текущую выделенную область документа. Все операции форматирования документа применяются к текущему экземпляру объекта Selection. Экземпляр Selection существует всегда: если в документе отсутствует выделение, то он представляет текущую позицию ввода.
Объект Range представляет непрерывную область документа, определенную начальным и конечным символами. Он характеризуется следующими свойствами:
Объект Bookmark, аналогично Range, представляет непрерывную область документа и может использоваться как контейнер для текста. В отличии от Range, объекты Bookmark:
В общем случае документ Microsoft Word является сложной композитной структурой, содержащей различные типы данных. Для извлечения данных из конкретного документа необходимо произвести его синтаксический анализ - парсинг (Parsing): определить типы хранящихся данных (текст, графика, таблицы, OLE-объекты) и выявить структуру документа.
Решение задач парсинга и извлечения контента из документа Microsoft Word связано, в основном, с использованием свойств и методов объекта Document. Имеет смысл построить модель документа, ориентированную на решение данного типа задач: среди порядка сотни свойств и методов объекта Document выявим необходимые для достижения поставленной цели и определим порядок их использования.
Основными типами данных документа Microsoft Word являются: текст, графика и таблицы. Таким образом, задача структурного анализа документа разделяется на три подзадачи:
Range является свойством объекта Paragraph. Текстовое содержание абзаца доступно через свойство Range.Text объекта Range. Общая модель парсинга текста документа Microsoft Word представлена на рис. 7.
Объект Range представляет собой базовый компонент модели структурного анализа документа (рис. 8).
Range предоставляет доступ ко всем основным типам данных документа. Среди его свойств - коллекции абзацев (Paragraphs), графических изображений (InlineShapes, ShapeRange), таблиц (Tables), рамок (Frames).
Объекты-таблицы (Table) содержатся в коллекции Tables и имеют структуру, представленную на рис. 9. Данные таблицы располагаются в ячейках - объектах Cell, объединенных в коллекции Cells. Имеется несколько вариантов получения доступа к экземплярам коллекций:
Можно получить прямой доступ к ячейке с помощью метода объекта-таблицы Table.Cell(Row, Column), который возвращает заданный объект Cell.
На примере таблиц проявляется важное свойство, необходимое для четкого понимания модели документа Microsoft Word - рекурсивный характер структуры документа. Свойство Range объекта-ячейки Cell может, в свою очередь, содержать коллекции таблиц, графики и абзацев (рис. 9). Это дает основания для применения рекурсивных алгоритмов анализа структуры документа.
Графические данные документа Microsoft Word могут содержаться в двух типах объектов: Shape и InlineShape. InlineShape представляет графический объект в текстовом слое документа (рисунок, OLE-объект, ActiveX-элемент). Shape - это графический объект в слое рисования документа или так называемом полотне (Canvas). Данный объект характеризуется параметрами обтекания текстом и имеет привязку (Anchor) к абзацу или диапазону. Модель парсинга графических объектов документа представлена на рис. 10.
Графические объекты текстового слоя составляют коллекцию Inline-Shapes объекта-диапазона, графические объекты полотна - коллекцию ShapeRange. Кроме этого, графику могут содержать объекты-рамки (Frame) из контейнера Frames.
Доступ к графическим объектам рамки осуществляется по той же схеме через его свойство Range. Следует отметить, что содержимое объекта-рамки можно скопировать в буфер обмена Windows.