Программируемость для хранилища xml данных для документов

Иллюстрации

Показать все

Изобретение относится к системе управления данными. Техническим результатом является повышение надежности за счет разрешения конфликтов доступа и редактирования данных. Система включает: процессор, считываемый компьютером носитель; приложения, потребляющие данные; хранилище данных документа; и хранилище данных, соединенное к приложениями, потребляющими данные; причем хранилища данных включают в себя: хранилища данных XML; брокер API; хранилище изменения, которое выполнено с возможностью хранения изменений; и хранилище отмены, которое выполнено с возможностью отмены любых изменений, выполненных в результате изменения, которое было выполнено в отношении элементов структурированных данных; при этом брокер API предоставляет интерфейс прикладного программирования (API), который позволяет обеспечить программный доступ к документам и к элементу структурированных данных, которые содержатся в хранилищах данных; и приложение может выполнять API, для доступа к элементам структурированных данных в хранилищах данных, когда документ открыт или закрыт. 3 н. и 13 з.п. ф-лы, 5 ил.

Реферат

Уровень техники

Пользователи компьютеров все больше привыкают к удобному для пользователя прикладному программному обеспечению, которое помогает им писать, вычислять, организовывать, подготавливать презентации, передавать и принимать электронную почту, сочинять музыку и т.п. Например, приложения - текстовые редакторы позволяют пользователям подготавливать различные полезные документы. Приложения - электронные таблицы позволяют пользователям вводить данные, манипулировать ими и организовать данные. Приложения - презентации слайдов позволяют пользователям создавать различные презентации слайдов, содержащие текст, изображения, данные или другие полезные объекты.

Документы, созданные такими приложениями (например, документы текстовых редакторов, электронные таблицы, документы - презентации слайдов), однако, обладают ограниченными возможностями для хранения/транспортирования содержания произвольных метаданных, требуемых контекстом документов. Например, решение, построенное поверх документа текстового редактора, может потребовать сохранения данных для делопроизводства, которые описывают различные состояния документа, например, предыдущие подтвержденные состояния в ходе делопроизводства (даты, время, имена), текущие состояния утверждения, будущие состояния делопроизводства до окончания работы над документом, имя и адрес офиса автора документа, изменения документа и т.п. Возможные варианты сохранения этой информации в основном ограничены использованием переменных документа или существующими свойствами связывания и встраивания объектов (OLE, СВО) документа, которые имеют ограничения. Например, невозможно сохранять иерархические данные; длина знака ограничена и т.п. Свойства таких способов сохраняют в одном хранилище, например, хранилище свойств OLE, что означает, что между свойствами могут возникать конфликты. Кроме того, такие сохраненные свойства не обладают возможностями проверки действительности данных. Пользователю таких приложений и соответствующих документов трудно сохранять произвольные данные вместе с документами, которые часто требуются для множества пользователей.

Сущность изобретения

Данный раздел "Сущность изобретения" предназначен для введения в упрощенной форме выбранных концепций, которые более подробно описаны ниже в разделе "Подробное описание изобретения". Данный раздел "Сущность изобретения" не предназначен для идентификации основных свойств или существенных свойств заявленного предмета изобретения и при этом не предполагается его использовать в качестве средства определения объема заявленного предмета изобретения.

Одни или более хранилищ данных содержатся отдельно от хранилища первичного представления в документе для сохранения, сопоставления и обеспечения возможности использования произвольных данных, которые ассоциированы с документом, созданном на компьютере. Данные для структурирования информации, ассоциированной с документом, такие как метаданные документа, содержатся в хранилище данных, в котором поддерживаются взаимосвязи между разными частями данных. Хранилище данных предоставляет интерфейсы прикладного программирования (API, ИПП) для различных частей данных, находящихся в хранилище данных, что обеспечивает для разных приложений возможность обращаться к одним или более таким частям данных и оперировать с ними.

Части данных могут быть структурированы в соответствии с языком разметки, например, таким как расширяемый язык разметки (XML, РЯР). Схемы XML могут быть ассоциированы с каждой частью данных, и хранилище данных может удостоверять действительность структуры XML, приложенной к данным, на основе схемы XML, ассоциированной с такой частью данных. Программный доступ обеспечивается к данным в их XML форме во время редактирования документа. Множество клиентских приложений могут обращаться и могут редактировать одни и те же части данных документа, и при этом разрешаются любые конфликтующие изменения данной части данных. Стандартные схемы XML (XSD, ОСР, определение схемы XML) также можно использовать для определения содержания любых частей специализированных данных XML, ассоциированных с метаданными документа, для обеспечения действительности данных XML, применяемых к данным документа.

Краткое описание чертежей

На фиг.1 иллюстрируется примерная вычислительная архитектура для компьютера;

на фиг.2 показана блок-схема, иллюстрирующая взаимосвязи между одним или более клиентских приложений и одним или более хранилищами данных и содержанием хранилища (хранилищ) данных;

на фиг.3 иллюстрируется схема системы, представляющая взаимодействие между внутренними и внешними потребителями данных с хранилищами данных XML;

на фиг.4 иллюстрируется процесс обработки событий, которые ассоциированы с хранилищем данных;

на фиг.5 иллюстрируется процесс обработки события, которое включает в себя побочные эффекты, в соответствии с аспектами настоящего изобретения.

Подробное описание изобретения

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

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

На фиг.1 показана одна примерная система, предназначенная для воплощения изобретения, которая включает в себя вычислительное устройство, такое как вычислительное устройство 100. В самой простой конфигурации вычислительное устройство 100 обычно включает в себя по меньшей мере одно процессорное устройство 102 и системную память 104. В зависимости от точной конфигурации и типа вычислительного устройства системная память 104 может быть энергозависимой (такой как ОЗУ), энергонезависимой (такой как ПЗУ, запоминающее устройство типа флэш и т.д.) или представлять собой некоторую комбинацию этих двух видов. Системная память 104 обычно включает в себя операционную систему 105, одно или более приложений 106 и может включать в себя программные данные 107. В одном варианте воплощения приложение 106 может включать в себя приложение 120 - текстовый редактор. Такая основная конфигурация иллюстрируется на фиг.1, и эти компоненты представлены внутри пунктирной линией 108.

Вычислительное устройство 100 может иметь дополнительные свойства или функции. Например, вычислительное устройство 100 может также включать в себя дополнительные (съемные и/или несъемные) устройства-накопители данных, такие как например, магнитные диски, оптические диски или лента. Такие дополнительные накопители представлены на фиг.1 в виде съемного накопителя 109 и несъемного накопителя 110. Компьютерные носители информации могут включать в себя энергозависимые и энергонезависимые, съемные и несъемные носители, воплощенные с использованием любого способа или технологии для хранения информации, такой как считываемые компьютером инструкции, структуры данных, программные модули или другие данные. Системная память 104, съемный накопитель 109 и несъемный накопитель 110, все представляют собой примеры компьютерных носителей информации. Компьютерные носители информации включают в себя, но не ограничиваются этим, ОЗУ, ПЗУ, СППЗУ, запоминающее устройство типа флэш или запоминающее устройство, построенное по другой технологии, CD-ROM, цифровые универсальные диски (DVD) или другие оптические накопители, магнитные кассеты, магнитную ленту, накопитель на магнитном диске или другие магнитные устройства хранения информации, или любой другой носитель, который можно использовать для сохранения требуемой информации и доступ к которому может осуществляться компьютерным устройством 100. Любой такой компьютерный носитель, предназначенный для хранения компьютерной информации, может составлять собой часть устройства 100. Вычислительное устройство 100 также может иметь устройство (устройства) 112 ввода, такие как клавиатура, мышь, перо, устройство голосового ввода, устройство сенсорного ввода и т.д. Устройство (устройства) 114 вывода, такие как дисплей, громкоговорители, принтер и т.д., также могут быть включены. Эти устройства хорошо известны в данной области техники и их подробное описание не требуется.

Вычислительное устройство 100 также может содержать соединение 116 для передачи данных, которое позволяет устройству связываться с другими вычислительными устройствами 118, например, через сеть. Соединение 116 передачи данных представляет собой один пример среды передачи данных. Среды передачи данных обычно могут быть воплощены с использованием считываемых компьютером инструкций, структур данных, программных модулей или других данных в виде модулированного сигнала данных, таких как несущая волна или другой механизм транспортирования, и включают в себя любую среду доставки информации. Термин "модулированный сигнал данных" означает сигнал, одна или более характеристик которого установлены или изменены таким образом, чтобы кодировать информацию в сигнале. В качестве примера и без ограничений среды передачи данных включают в себя проводную среду, такую как проводная сеть или непосредственное проводное соединение, и беспроводную среду, такую как акустическая, РИ, инфракрасная и другая беспроводная среда. Термин «считываемый компьютером носитель информации», в том виде, как он используется в настоящем описании, включает в себя как носители информации, так и среды передачи данных.

Ряд программных модулей и файлов данных могут быть сохранены в системной памяти 104 вычислительного устройства 100, включая в себя в операционную систему 105, которая предназначена для управления работой сетевого персонального компьютера, такую как операционная система WINDOWS компании MICROSOFT Corporation г. Редмонд, штат Вашингтон. В системной памяти 104 также может храниться один или более программных модулей, таких как приложение 120 текстового редактора, и другие, описанные ниже модули. Приложение 120 текстового редактора во время работы предоставляет функции формирования, редактирования и обработки электронных документов.

В соответствии с одним вариантом воплощения изобретения приложение 120 текстового редактора содержит программу WORD компании MICROSOFT Corporation. Однако следует понимать, что можно использовать программы приложения текстового редактора других производителей. Приложение текстового редактора представлено на чертеже только в качестве примера и не ограничивается другими типами приложений, которые могут формировать документы и позволяют выполнять операции с документами. Например, другие прикладные программы 106, позволяющие обрабатывать различные формы содержания (например, текст, изображения, и т.д.), такие как прикладные программы - электронные таблицы, прикладные программы - базы данных, прикладные программы - презентации слайдов, прикладные программы для рисования или программы автоматизированного проектирования и т.д. в равной степени применимы. Пример прикладной программы 106, которая формирует и которая позволяет выполнять операции с другими типами документов, включает в себя прикладную программу OFFICE компании MICROSOFT Corporation.

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

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

Термин "данные" может относиться к информации поверхностного уровня документа или уровня представления, такой как слова, предложения, абзацы и т.п., а также к вспомогательной информации, например метаданным, которая переносится вместе с документом текстового редактора, которые относятся к нему или которые используются документом текстового редактора. Такая информация часто бывает объемной и, как правило, ее не представляют на уровне представления документа.

Термин "представление" относится к видимой части документа, такой как текст и компоновка, которая может проявляться, если документ был напечатан.

Термин "тег" относится к знакам, вставленным в документ, которые ограничивают элементы в документе XML. Каждый элемент обычно включает в себя два тега: начальный тег и конечный тег. Возможно использовать также пустой элемент (без содержания), и в этом случае разрешено использовать один тег.

Термины "язык разметки" или "ML" (ЯР) относятся к языку для специальных кодов, содержащихся в документе, которые определяют, как части документа должны интерпретироваться прикладной программой. В файле текстового редактора язык разметки определяет, как текст должен быть отформатирован или скомпонован.

Термин "элемент" относится к основному модулю документа XML. Элемент может содержать атрибуты, другие элементы, текст и другие области содержания для документа XML.

Термин "строительный блок" относится к связанной и потенциально помеченной области в документе, которая используется как контейнер для конкретного типа содержания (контента), вводимого пользователем.

Термин "связывание данных, отображение данных и поле данных" относится к свойству строительного блока, который определяет XPath к DOM XML, сохраненным в документе, где должно быть сохранено содержимое строительного блока.

Содержание (контент) XML между тегами рассматривается как "дочерние элементы" (или потомок) для элемента. Следовательно, другие элементы, внедренные в контент элемента, называются "дочерними элементами" или "дочерними вершинами" или элементом. Текст, внедренный непосредственно в контент элемента, рассматривается как "дочерние текстовые вершины элемента". Вместе дочерние элементы и текст, находящийся в элементе, составляют "содержание" («контент») элемента.

Термин "атрибут" относится к дополнительному свойству, установленному для конкретного значения и ассоциированному с элементом. Элементы могут иметь произвольное количество установок атрибута, ассоциированных с ними, включая нулевое количество. Атрибуты используются для ассоциирования дополнительной информации с элементом, которая не будет содержать дополнительные элементы или не будет рассматриваться как текстовая вершина (узел).

"XPath" представляет собой оператор, который использует выражение пути для идентификации вершин в документе XML. Путь XPath представляет собой разделенный косой чертой список наименований дочерних элементов, которые описывают путь через документ XML. Структура "выбирает" элементы, которые соответствуют этому пути.

Термин "хранилище данных XML или хранилище данных" относится к контейнеру в документе, такому как документ текстового редактора, документ - электронная таблица, документ - презентация слайдов и т.д., который обеспечивает доступ для хранения и модификации данных (например, в формате XML), сохраненных в документе, когда файл открыт. Дополнительное определение хранилища данных XML представлено ниже со ссылкой на фиг.2.

На фиг.2 показана блок-схема, иллюстрирующая взаимосвязи (соотношение) между одним или более дочерним приложением и одним или более хранилищами данных и содержанием хранилища (хранилищ) данных. В общих словах, одно или более хранилищ данных содержатся отдельно от хранилища первичного представления в документе для сохранения, сопоставления и для обеспечения возможности использования произвольных данных, которые ассоциированы с документом, генерируемым компьютером. Данные для структурирования информации, ассоциированной с документом, такие как метаданные документа, содержатся в хранилище данных, где поддерживаются взаимосвязи между различными частями данных. Хранилище данных предоставляет интерфейсы прикладного программирования (API) для различных частей данных в хранилище данных, обеспечивая возможность доступа и выполнения операций для различных прикладных программ с одними или более частями данных. Используемые в данном описании термины "потребители данных", "прикладные программы" и "процессы" можно использовать взаимозаменяемо, если только контекст явно не диктует другое.

Части данных могут быть структурированы в соответствии с языком разметки, таким как расширяемый язык разметки (XML). Схемы XML могут быть ассоциированы с каждой частью данных, и хранилище данных может подтверждать действительность структуры XML, применяемой к данным, на основе схемы XML, ассоциированной с заданной частью данных. Хранилища данных могут содержать любое количество элементов произвольных данных, например метаданные, структурированные в соответствии с расширяемым языком разметки (XML). В соответствии с этим, провайдеры решений документа могут сохранять произвольные метаданные как XML с заданным документом и обрабатывать эту информацию с использованием заданного решения, имея доступ к данным после возникновения события, например, когда данные удаляют или загружают в хранилище данных, и/или когда пользователь открывает/редактирует/сохраняет документ.

Программный доступ также может быть обеспечен для данных в их форме XML во время редактирования документа. В соответствии с одним вариантом воплощения предусмотрен стандартный механизм, который известен для разработчиков решения, с помощью которого можно обращаться к данным и модифицировать их программным способом, когда документ открыт. Такой программный доступ имитирует стандартные интерфейсы XML. Программный доступ к данным обеспечивается через интерфейсы прикладной программы к одному или более редактирующим приложениям клиента (например, приложениям редактирования или создания документа и/или к приложениям - добавленным решениям третьей стороны и т.п.). В соответствии с этим множество клиентских приложений могут обращаться и могут редактировать одни и те же части данных документа и любые конфликтующие изменения для данной части данных разрешаются. Могут быть выполнены "побочные эффекты" любого данного изменения (например, в ответ на установку названия компании "Microsoft," оно изменяются на стандартные символы "MSFT"). Кроме того, изменения данных и любых ассоциированных побочных эффектов могут быть "взаимосвязаны" хранилищем данных таким образом, что отмена одного или более изменений приводит к обратному выполнению всех соответствующих изменений. Это помогает устранять нагрузку при разработке от самого решения для того, чтобы обеспечить отмену всех изменений, когда пользователь инициирует отмену первоначального изменения на поверхности документа, например, нажимая на команду Undo (отменить).

Стандартные схемы XML (XSD) также можно использовать для определения содержания любых частей пользовательских данных XML, ассоциированных с метаданными документа, для обеспечения действительности данных XML, применяемых к данным документа. Такие схемы могут быть прикреплены к любому экземпляру данных XML, сохраненных в документе, и хранилище данных будет запрещать любое изменение данных XML, которое приведет к тому, что структура XML (то есть теги XML, в отличие от их содержания) этих данных станут недействительными. Это помогает обеспечить возможность для разработчика решения прикрепить конкретную часть метаданных XML к документу и обеспечить структурную "правильность" данных XML в соответствии с ассоциированной схемой, независимо от потребителей данных (например, дополнения), использующих для изменения этих данных.

Рассмотрим теперь фиг.2, на которой данные 220 документа включают в себя данные структуры XML и ассоциированные данные документа, представляющие виды поверхности или уровня представления документа. Например, данные 220 документа могут включать в себя структуру XML (например, теги заголовков, теги тела документа, теги завершения) и ассоциированные данные просмотра поверхности (например, слова, предложения, абзацы) документа текстового редактора, документа электронной таблицы, документа презентации слайдов и т.п.

Хранилище 208 данных представляет собой склад (репозитарий) данных документа, предназначенный для сохранения одной или более частей структурированных данных, ассоциированных с одним или более типами данных, ассоциированных с данным документом. Хотя только одно хранилище данных представлено на чертеже, более чем одно хранилище данных может использоваться на практике. Метаданные 1 225 (элемент структурированных данных) могут включать в себя данные структуры XML и ассоциированные данные для первой части метаданных, ассоциированных с документом. Например, метаданные 1 225 могут включать в себя данные структуры XML (например, теги даты, теги названия и т.д.), в которых содержится имя автора документа, дата создания документа, дата последнего изменения/сохранения документа и т.п. Метаданные 2 230 (элемент структурированных данных) могут включать в себя данные (теги) структуры XML и ассоциированные метаданные, представляющие вторую часть метаданных, ассоциированных с документом. Как должно быть понятно, метаданные 1 и метаданные 2 представлены с целью примера и не ограничивают многообразие и множество различных типов данных, которые могут содержаться в хранилище 208 данных в ассоциации с данным документом. Например, как описано в настоящем описании, произвольные данные могут быть структурированы и добавлены к документу одной или более прикладных программ в соответствии с пожеланиями провайдеров решений или пользователей, имеющих доступ к данным документа.

Файл 240, 245 схемы может быть в случае необходимости добавлен к каждой части данных, сохраненных в хранилище 208 данных, для того, чтобы диктовать правила синтаксиса и проверки, ассоциированные с данными расширяемого языка разметки (XML) для каждой части данных 225, 230. Файлы схемы XML обеспечивают способ описания и проверки правильности данных в среде XML. Файл схемы определяет, какие данные разметки XML, включающие в себя элементы и атрибуты, используются для описания содержания в документе XML, и файл схемы определяет синтаксис разметки XML, включающий в себя то, разрешен ли каждый элемент, какие типы содержания (контента) разрешены в пределах элемента и какие элементы могут появляться в пределах других элементов. Использование файлов схемы обеспечивает то, что документ (или, в данном случае, отдельная часть данных) будет структурирован последовательным и прогнозируемым способом. Файлы 240, 245 схемы могут быть созданы пользователем и обычно поддерживаются соответствующим языком разметки, таким как XML.

Такая схематизация документа позволяет для хранилища данных обеспечивать возможность "гарантировать" структурную действительность документа путем отклонения какого-либо изменения, которое нарушает данный файл схемы, на уровне хранилища данных. В соответствии с вариантом воплощения в хранилище 208 данных используется модуль 260 проверки правильности схемы для подтверждения правильности структуры XML, добавленной к заданной части данных, или изменений, выполненных в заданной части данных, в соответствии с ассоциированным файлом схемы. Например, если автор документа или редактор выполняет структурные изменения XML в отношении заданной части данных, например, метаданных 1, при которых редактор добавляет или удаляет заданный тег XML, хранилище 208 данных будет использовать модуль проверки правильности схемы для проверки структурных изменений XML в соответствии с ассоциированным файлом схемы, для обеспечения действительности изменения. Если изменение является недействительным, может быть сгенерирована ошибка для редактора. Понятно, что такое управление структурой XML, применяемое для заданной части данных, позволяет обеспечить структурную последовательность и прогнозируемость, которые являются особенно важными для обеспечения возможности для клиентского приложения и третьей стороны взаимодействовать с ассоциированными данными.

Хранилище 208 данных обеспечивает один или более интерфейсов 270 прикладного программирования (API), к которым может обращаться приложение 205 клиента (например, приложения текстового редактора, приложения - электронные таблицы, приложения - презентации слайдов и т.д.), а также приложения 210, 215, разработанные третьей стороной, через объектные объекты (OM, МО) соответствующих приложений 205, 210, 215. Эти API позволяют клиентским приложениям и приложениям третьей стороны загружать любой существующий файл XML в хранилище 208 данных заданного документа, обеспечивая таким образом то, что эти данные теперь будут составлять часть документа и будут перемещаться в пределах этого документа в течение срока его существования (например, при открытии/редактировании/сохранении/переименовании/и т.д.), или до тех пор, пока эти данные не будут удалены из хранилища данных. В соответствии с одним вариантом воплощения данные в хранилище данных будут доступны в их формате XML, даже когда приложение-источник для заданной части данных 225, 230 будет закрыто или по какой-либо другой причине не будет доступно. Таким образом, доступ к заданной части данных 225, 230 может осуществляться через API 270 другими приложениями (отличными от приложения-источника). Как описано ниже, API также позволяют клиентским приложениям и приложениям, разработанным третьей стороной, выполнять изменения в данных разметки XML, применяемых для элементов 225, 230 данных.

После того как данные 225, 230 XML загружены в хранилище данных для ассоциирования с документом 220, ими можно манипулировать как стандартным XML с использованием интерфейсов хранилища данных, разработанных для предоставления способов, аналогичных существующим интерфейсам редактирования XML, для того, чтобы использовать существующее знание разработчика стандарта программирования XML. Это позволяет пользователям выполнять стандартные операции XML в отношении данных XML, добавленных к хранилищу данных для документа, например, добавления элементов и атрибутов, удаления элементов и атрибутов, изменения значения существующих элементов/атрибутов и считывания значения любой существующей части ассоциированного дерева XML. Используя эти стандартные операции XML, решения могут сохранять структурированные комплексные (сложенные) метаданные в документе, к которому не применяются никакие предыдущие ограничения в отношении длины/размера данных или структуры данных, что позволяет использовать это хранилище данных XML для существенно большего количества структурных решений, чем в решениях предшествующего уровня техники. Например, для приложения 215 третьей стороной может быть установлена возможность размещения и выделения имен автора документа и дат создания документов из множества документов путем считывания метаданных 1 225, добавленных к хранилищу 208 данных для каждого документа. Пример приложения третьей стороны может быть запрограммирован на уровне прикладной программы так, что он будет составлять список имен авторов документа и дат создания документа для всех документов, созданных заданной организацией. В соответствии с вариантами воплощения настоящего изобретения приложение третьей стороны может использовать структуру XML, применяемую к метаданным 1 для эффективного поиска и извлечения требуемых данных. Например, приложение третьей стороны может быть написано так, что оно будет выполнять разбор структуры XML файла метаданных 1 для поиска местонахождения тегов XML, таких как <docauthor> и <doccreationdate>, для получения и использования данных, ассоциированных с этими тегами. Следует понимать, что указанное выше представляет собой только один пример множества способов, с помощью которых одно или более приложений могут взаимодействовать со структурными данными, которые ассоциированы с документом, через хранилище 208 данных.

Кроме того, хранилище 208 данных обеспечивает любое количество интерфейсов 270 API для любой отдельной части данных 220, 225, 230 XML (также известных как элемент хранения), для обеспечения возможности работы множества приложений 205, 210, 215 с одной и той же частью данных. Например, несколько решений, таких как приложение - клиент (например, приложение текстового редактора), и решение приложения третьей стороны (например, описанные выше приложения) могут работать с одним и тем же набором свойств документа (например, свойствами, содержащимися в метаданных 2 файла 230). Используя хранилище 208 данных, каждое из этих приложений получает отдельный доступ к требуемым данным 230 XML через их собственный интерфейс 270 API хранилища данных, что обеспечивает для каждого приложения возможность связи с данными через его собственную OM без необходимости использования сложного решения для доступа множества потребителей данных к одной и той же части данных.

Для того чтобы обеспечить возможность доступа для такого множества приложений 205, 210, 215 - потребителей данных к одним и тем же данным, хранилище 208 данных уведомляет каждое из этих приложений, когда любая часть данных XML изменяется другим приложением, так что заданное приложение может ответить на это изменение (как внутри себя, в соответствии со своим собственным процессом, так и внешним образом путем других изменений тех же данных). Когда одно приложение запрашивает изменение заданного элемента данных, этот запрос автоматически поступает во все другие приложения, что обеспечивает для других приложений возможность определения, каким образом отвечать и требуется ли отвечать на запрашиваемое изменение. В соответствии с одним вариантом воплощения это осуществляется путем обеспечения возможности для каждого приложения регистрировать возможность "прослушивания" любой части данных XML, с которыми оно имеет интерфейс, таким образом, что данное решение приложения/программа принимает только те сообщения, которые соответствуют его собственной логике. Например, один тип приложения 210 может пожелать зарегистрировать прослушивание всех изменений, выполняемых для заданных данных XML, с тем чтобы обеспечить возможность предоставления подробной деловой логики для решения третьей стороны, но другой тип приложения 215 может пожелать прослушивать только изменения одного или двух конкретных элементов XML в пределах одних и тех же данных, поскольку его логику не интересуют изменения любой другой части данных XML.

В соответствии с этим вариантом воплощения множество приложений 205, 210, 215 могут обращаться и могут редактировать одну и ту же часть данных документа, и при этом разрешаются любые конфликтующие изменения данной части данных. Например, "побочные эффекты" любого заданного изменения могут быть выполнены, когда одно изменение, выполняемое одним приложением, приводит к изменению - побочному эффекту другого приложения. Например, первое приложение 210 может получить задачу извлечения названий компаний из одного или более элементов 225, 230 данных, ассоциированных с заданным документом, для перевода этих названий в соответствующие стандартные символы, если они доступны, для составления списка стандартных символов компаний, относящихся к данному документу. Если второе приложение 215 добавляет или изменяет заданное название компании в заданной части метаданных, например, изменяет название компании с "Company ABC" на "Company XYZ," первое приложение может прослушивать это изменение для автоматического обновления своего списка стандартных символов, для включения этих стандартных символов в "Company XYZ" вместо "Company ABC". Кроме того, такие изменения и любые ассоциированные побочные эффекты могут быть взаимосвязаны хранилищем 208 данных таким образом, что отмена одного или более изменений приводит к отмене всех связанных с ним изменений.

На фиг.3 иллюстрируется схема системы, представляющая взаимодействие между внутренним и внешним потребителями данных с хранилищами данных XML. Как представлено, система 300 включает в себя хранилище 302 данных, включающее в себя уровень 304 представления, хранилища 1-N (306) XML, каждое из которых включает в себя хранилище ошибки и хранилище отмены, хранилище 308 глобального изменения, необязательное хранилище 310 глобальной отмены, внутренний брокер 312, который соединен с потребителями 1-N 314 внутренних данных, и внешний брокер 316, который соединен с потребителями 1-N 318 внешних данных.

Используя хранилище (хранилища) 306 данных XML, документы имеют возможность содержать любое количество произвольных элементов данных (если только каждый из них соответствует стандартному синтаксису XML). Произвольные метаданные могут быть сохранены в XML в пределах документа, и эта информация автоматически может быть передана в прямом и обратном направлении, когда пользователь открывает/редактирует/сохраняет документ.

Как описано выше, программный доступ к этим данным обеспечивается через API, который может использоваться во время редактирования документа, предоставляя стандартный механизм, известный разработчикам решения, через который к этой информации можно обращаться и можно ее модифицировать программно, когда данный документ будет открыт. В соответствии с одним вариантом воплощения такой программный доступ разработан таким образом, чтобы он имитировал стандартные интерфейсы XML. Используя API, данные можно добавлять/удалять, в то время как приложение, такое как приложение текстового редактора, работает; заполнение данными может производиться в пределах элемента хранилища (часть в пределах хранилища данных); данными можно манипулировать, используя стандартные конструкции XML; схемы могут быть ассоциированы с любыми произвольными данными XML в хранилище данных; схемы можно добавлять/удалять/изменять после их ассоциирования с элементом хранилища данных; и изменения XML могут представляться как события для всех осуществляющих прослушивание клиентов. Как иллюстрируется, API содержит внешний брокер (посредник) 316, который предоставляет интерфейс для внешних потребителей 318 данных, и внутренний брокер 312, который обеспечивает интерфейс для любых внутренних потребителей 314 данных, которые взаимодействуют с хранилищем 302 данных.

Манипуляции с хранилищем 302 данных могут происходить в режиме реального времени. Как описано выше, хранилища 306 данных могут содержать один или более типов данных. Например, компании могут иметь одно хранилище данных, которое они используют для сохранения всех разных типов данных, которые они желают сохранять в пределах одного хранилища данных, в то время как другая компания может хотеть сохранять данные других типов данных в других хранилищах данных.

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