Научная электронная библиотека
Монографии, изданные в издательстве Российской Академии Естествознания

ПОСТРОЕНИЕ ИНФОРМАЦИОННЫХ СИСТЕМ НЕПРЕРЫВНОГО ОБРАЗОВАНИЯ НА ОСНОВЕ ИНТЕРНЕТ-ТЕХНОЛОГИЙ

Дьяченко А. В., Манжула В. Г., Попов А. Э., Семенихин И. Н., Толстобров А. П.,

2.1.1 Модель документа Microsoft Word

Огромное количество электронных версий учебно-методических мате­риалов в образовательных учреждениях России представлено в формате Mi­crosoft Word. Это объясняется широкой популярностью приложений Micro­soft Office среди пользователей и простотой освоения и использования дан­ного программного продукта. Поэтому весьма актуальной является задача автоматизации процесса конвертирования образовательного контента из представления Microsoft Word в формат Moodle.

Документ Microsoft Word представляет собой специализированное СОМ-ориентированное хранилище данных - структурированное хранилище (Structured Storage), организованное по иерархическому принципу. Документ может содержать различные типы данных: структурированный текст, графи­ку, математические выражения, организационные диаграммы и т.д.

Концепция структурированного хранилища является составной частью современной парадигмы программирования на основе модели компонентных объектов (Component Object Model - COM). По сути, структурированное хра­нилище - это технология объединения в одной логической единице хранения данных (файле) объектов с различной природой и свойствами. Технология СОМ предлагает стандартную реализацию концепции структурированного хранилища в виде составного файла (Compound File): файловая система внутри файла. СОМ-хранилище представляет собой иерархическую структу­ру коллекций объектов двух типов: хранилищ (Storage) и потоков (Stream), которым в традиционной файловой системе соответствуют каталоги и файлы. Данный подход позволяет существенно снизить издержки хранения в од­ном файле объектов различной природы.

Объект-хранилище, аналогично каталогу файловой системы, может со­держать потоки и другие хранилища. Фактически это означает, что хранили­ще содержит записи с информацией о местоположении, размере и других свойствах размещенных в нем объектов-потоков и других хранилищ. Объект-поток является последовательностью байтов, интерпретация которых, как и для обычного файла, зависит от типа потока (файла). Составной файл обяза­тельно должен содержать корневое хранилище (Root Storage), которое, в свою очередь содержит как минимум один объект-поток, представляющий данные о самом хранилище (Native Stream), рис. 5. Кроме этого, корневое хранилище содержит имя составного файла в нотации файловой системы, к которой он принадлежит.

  

Каждый объект документа в составном файле представлен отдельным хранилищем, которое может содержать:

  • один или несколько объектов-потоков, соответствующих экземпля­рам данного объекта;
  • другие объекты-хранилища, представляющие встроенные в негообъекты (Inline Storage), и т.д.

Таким образом, глубина вложенности объектов в хранилище теорети­чески не ограничена, документ может быть сколь угодно сложным.

В общем случае технология СОМ предоставляет набор средств уровня API для работы с произвольными структурированными хранилищами. Так, объекты-хранилища и объекты-потоки поддерживают стандартный набор ин­терфейсов:

  • IRootStorage - связывает хранилище с содержащим его файлом;
  • IStorage - содержит методы для создания, открытия, модификации,перемещения, копирования, переименования, удаления объектовхранилища;
  • IStream - поддерживает операции с потоком, аналогичные файло­вым операциям в файловой системе: чтение, запись, управлениеуказателем и т.д.;
  • ILockBytes - реализует байтовый буфер для работы с носителямиданных;
  • IPersist - идентификация объектов на уровне операционной систе­мы;
  • IPersistStorage - поддержка иерархической структуры хранилища;
  • IPersistStream - реализует сериализацию объектов хранилища;
  • IPersistFile - доступ к объектам, содержащимся в других файлах.Кроме этого, имеется Structured Storage API, содержащий следующие

основные группы функций:

  • функции-ярлыки, выполняющие пакетные вызова других API-функций и интерфейсных методов для решения стандартных задач;
  • функции доступа к реализации структурированного хранилища исоставному файлу;
  • функции конвертирования и эмуляции объектов, которые дают воз­можность OLE-серверу работать с объектами, созданными другимсервером;
  • функции конвертирования объектов формата OLE 1 в структуриро­ванное хранилище.

Конкретные реализации СОМ-приложений, использующие структури­рованные хранилища, как правило, имеют собственные библиотеки объек­тов-оберток API-интерфейса. Так, Microsoft Word предоставляет в распоря­жение прикладных программ сотни объектов. Отношения наследования и аг­регации объединяют эти объекты в иерархическую структуру - объектную модель Microsoft Word.

На рис. 6 представлен концептуальный уровень объектной модели Microsoft Word, который включает в себя шесть базовых объектов: 

Рис. 6. Объектная модель Microsoft Word

  • Application;
  • Document;
  • Selection;
  • Rang e;
  • Bookmark.

К особенностям модели в первую очередь относится наличие множест­венных перекрытий. Так, Document и Selection являются компонентами объ­екта Application, однако Document так же является свойством объекта Selec­tion. Среди свойств 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 представляет непрерывную область документа, опреде­ленную начальным и конечным символами. Он характеризуется следующими свойствами:

  • Range может представлять текущую позицию ввода, непрерывнуюобласть текста или документ целиком;
  • Range включает управляющие символы - отступы, табуляции, раз­рывы срок, границы абзацев и т.д.;
  • Range может представлять текущее выделение или другой участокдокумента;
  • участок документа, представляемый объектом Range не выделяетсявизуально;
  • если новый текст вводится в конец диапазона, представленного объ­ектом Range, то он включается в состав объекта;
  • объекты Range не сохраняются вместе с документом.Возможно определение нескольких экземпляров объекта Range в одном и том же документе.

Объект Bookmark, аналогично Range, представляет непрерывную об­ласть документа и может использоваться как контейнер для текста. В отли­чии от Range, объекты Bookmark:

  • именуются;
  • сохраняются вместе с документом;
  • могут быть видимыми - свойство ShowBookmarks = True объектаView.

В общем случае документ Microsoft Word является сложной композит­ной структурой, содержащей различные типы данных. Для извлечения дан­ных из конкретного документа необходимо произвести его синтаксический анализ - парсинг (Parsing): определить типы хранящихся данных (текст, гра­фика, таблицы, OLE-объекты) и выявить структуру документа.

Решение задач парсинга и извлечения контента из документа Microsoft Word связано, в основном, с использованием свойств и методов объекта Document. Имеет смысл построить модель документа, ориентированную на решение данного типа задач: среди порядка сотни свойств и методов объекта Document выявим необходимые для достижения поставленной цели и опре­делим порядок их использования.

Основными типами данных документа Microsoft Word являются: текст, графика и таблицы. Таким образом, задача структурного анализа документа разделяется на три подзадачи:

  • парсинг текста документа;
  • парсинг таблиц;
  • парсинг графики.Основной структурной единицей текста документа является абзац, представленный объектом Paragraph. Все абзацы документа объединяются в объект-коллекцию Paragraphs. Коллекции модели Microsoft Word имеют стандартный набор свойств и методов для работы с контейнером, включая методы-итераторы для перебора элементов. Непосредственный доступ к тек­сту предоставляет объект Range, который создается для большинства компо­нентов модели Microsoft Word.  

Range является свойством объекта Paragraph. Текстовое содержание абзаца доступно через свойство Range.Text объекта Range. Общая модель парсинга текста документа Microsoft Word представлена на рис. 7.

Объект Range представляет собой базовый компонент модели струк­турного анализа документа (рис. 8).

Range предоставляет доступ ко всем основным типам данных докумен­та. Среди его свойств - коллекции абзацев (Paragraphs), графических изо­бражений (InlineShapes, ShapeRange), таблиц (Tables), рамок (Frames).

Объекты-таблицы (Table) содержатся в коллекции Tables и имеют структуру, представленную на рис. 9. Данные таблицы располагаются в ячей­ках - объектах Cell, объединенных в коллекции Cells. Имеется несколько ва­риантов получения доступа к экземплярам коллекций:

  • коллекция ячеек таблицы является свойством её объекта Range;
  • коллекция ячеек строки - свойство объекта Row из коллекции Rows;
  • коллекция ячеек столбца - свойство объекта Colum n из коллекции
    Columns;

Можно получить прямой доступ к ячейке с помощью метода объекта-таблицы 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.


Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1.074