Система и способ проверки правильности документов xml и выдачи сообщения о нарушениях схемы

Иллюстрации

Показать все

Изобретение относится к способам проверки правильности документа расширяемого языка разметки (XML) и выдачи сообщения о нарушениях схемы в режиме реального времени. Техническим результатом является обеспечение проверки правильности документа XML и сообщения о нарушениях схемы в режиме реального времени, когда пользователь редактирует документ. Поддерживается параллельное дерево, которое включает в себя узлы, соответствующие элементам «неродного» XML документа XML. Когда изменения происходят в документе XML, отмечаются элементы «неродного» XML, соответствующие изменениям. Узлы, соответствующие отмеченным элементам «неродного» XML, проверяются на правильность по отношению к схеме XML, которая соответствует разметке «неродного» XML. Об элементах и узлах, соответствующих ошибкам в разметке «неродного» XML, затем сообщают пользователю согласно индикаторам отображения в документе XML и параллельном дереве. 3 н. и 17 з.п. ф-лы, 8 ил.

Реферат

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

В последние годы языки разметки достигли широкой популярности. Один из видов языка разметки, расширяемый язык разметки (XML), является универсальным языком, который обеспечивает способ идентификации, обмена и обработки различных видов данных. Например, XML используется для создания документов, которые могут использоваться разнообразными прикладными программами. Элементы файла XML имеют связанное пространство имен и схему.

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

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

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

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

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

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

Параллельное дерево отражает изменения в документе XML в реальном времени и дает возможность проверки правильности в режиме реального времени разметки «неродного» XML. Когда возникает момент неактивного состояния после изменения в разметке «неродного» XML или в текстовом содержимом документа XML, поддерево параллельного дерева, соответствующее области документа XML, где произошли изменения, проверяется с помощью средства (механизма) проверки правильности. Если существует одна или более ошибок при изменении «неродного» XML или текстового содержимого, то средство (механизм) проверки правильности уведомляет текстовый процессор об ошибках. Текстовый процессор затем выделяет ошибки и в пределах документа XML, и в пределах параллельного дерева согласно командам пользовательского интерфейса для обработки таких ошибок.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

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

Фиг.2 - структурная схема, показывающая пример среды для реализации настоящего изобретения.

Фиг.3 показывает пример структурной схемы документа XML и параллельного дерева в соответствии с настоящим изобретением.

Фиг.4 показывает пример структурной схемы документа XML и параллельного дерева, которые включают в себя ошибки, в соответствии с настоящим изобретением.

Фиг.5 - логическая схема последовательности операций примера процесса проверки правильности документа XML и выдачи сообщения об ошибках в соответствии с настоящим изобретением.

Фиг.6 - логическая схема последовательности операций примера процесса определения местоположения и обработки изменений в пределах документа XML в соответствии с настоящим изобретением.

Фиг.7 - логическая схема последовательности операций примера процесса проверки правильности документа XML в соответствии с настоящим изобретением.

Фиг.8 - логическая схема последовательности операций примера процесса отображения ошибок в документе XML и в параллельном дереве в соответствии с настоящим изобретением.

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНОГО ВАРИАНТА ОСУЩЕСТВЛЕНИЯ

По всему описанию и формуле изобретения следующие термины имеют значения, явно указанные ниже, если контекст явно не диктует иное значение.

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

Термины ««родной» (собственный) расширяемый язык разметки» или ««родной» (собственный) XML» относятся к элементам языка разметки, которые связаны с приложением текстового процессора, и к схеме, связанной с приложением текстового процессора.

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

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

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

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

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

ИЛЛЮСТРАТИВНАЯ ОПЕРАЦИОННАЯ СРЕДА

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

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

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

Фиг.2 - структурная схема, показывающая примерную среду для применения настоящего изобретения. Показанная на фиг.2 примерная среда 200 включает в себя текстовый процессор 120, документ 210 XML, схему 215 «неродного» (несобственного) XML, средство 225 (механизм) проверки правильности XML и структуры 230 данных. Структуры 230 данных включают в себя информацию 235 об ошибке, параллельное дерево 220 и данные 240 синхронизации.

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

В соответствии с настоящим изобретением элементы «родного» XML и «неродного» XML могут сосуществовать в документе 210 XML и могут проверяться на правильность отдельно. Элементы «неродного» XML связаны со схемой 215 «неродного» XML. При проверке правильности элементы «неродного» XML исследуются относительно того, соответствуют ли они схеме 215 «неродного» XML. Как описано выше, схема устанавливает, какие теги и атрибуты используются для описания содержимого в документе XML, где разрешается каждый из тэгов, какие типы содержимого могут появляться в элементах и какие элементы могут появляться в других элементах, гарантируя, что документ структурирован одним и тем же образом. Соответственно, элементы «неродного» XML являются правильными, когда они структурированы так, как сформулировано в схеме 215 «неродного» XML. Проверка правильности элементов «неродного» XML описана ниже дополнительно при описании фиг.7.

Средство (механизм) 225 проверки правильности XML является модулем, который конфигурируется для поддержания дерева элементов и для проверки правильности дерева элементов по отношению к некоторой схеме. Вкратце, средству 225 проверки правильности XML может передаваться объект, который определяет дерево элементов, например объект, который соответствует элементам в пределах документа 210 XML, указатель на схему, такую как схема «неродного» XML 215, и возможно, содержимое одного или более элементов дерева элементов. С помощью этой информации средство 225 проверки правильности XML проверяет правильность дерева элементов по отношению к схеме и сообщает запрашиваемому процессу о любых нарушениях.

Во время выполнения текстовый процессор 120 поддерживает несколько структур 230 данных, которые могут участвовать в проверке правильности элементов «неродного» XML в соответствии с одним из воплощений настоящего изобретения. Параллельное дерево 220 является деревом элементов, которое включает в себя узлы, соответствующие каждому элементу «неродного» XML в пределах документа 210 XML. В одном из вариантов осуществления параллельное дерево 220 имеет информацию о каждом элементе и содержимом документа 210 XML, и документ 210 XML имеет информацию об узлах параллельного дерева 220. Соответственно, пользователь может выделить узел в параллельном дереве 220 и элементы, соответствующие этому узлу, также выделяются в документе 210 XML. Точно так же выделение части документа 210 XML также приводит к выделению соответствующего(их) узла(лов) параллельного дерева 220. Примерное параллельное дерево описано дополнительно ниже при описании фиг.3.

Информация (данные) 235 об ошибках включают в себя данные, возвращенные в текстовый процессор 120 от средства 225 проверки правильности XML, когда ошибка произошла по отношению к элементам, проверенным на правильность с помощью средства 225 проверки правильности XML. Данные 235 об ошибках может также включать в себя информацию для отображения уведомления об ошибках текстовым процессором 120. В одном из вариантов осуществления текстовый процессор 120 сообщает о четырех отдельных типах ошибок, когда ошибка является результатом проверки на правильность. Четыре типа ошибок включают в себя ошибку местоположения, ошибку недопустимого содержимого, ошибку отсутствия содержимого и ошибку недопустимого атрибута. Также могут использоваться другие различные типы ошибок по сравнению с описанными четырьмя. Определение типа ошибки упрощает анализ, который должен быть выполнен для исправления ошибки. Данные 235 об ошибках могут также включать в себя дополнительную информацию, относящуюся к ошибке, такую как предложение о том, как можно исправить ошибку, которая может быть отображена пользователю. Отображение и зависимость информации об ошибке описаны дополнительно далее со ссылками на фиг.8.

Данные 240 синхронизации включают в себя данные для синхронизации параллельного дерева 220 с документом 210 XML в реальном времени. В одном из вариантов осуществления данные 240 синхронизации включают в себя таблицу идентификаторов, которые связаны с каждым элементом в пределах документа 210 XML. Идентификаторы однозначно определяют каждый элемент в пределах документа 210 XML, и поэтому также однозначно определяют каждый узел в пределах параллельного дерева 220. Данные 240 синхронизации помогают при синхронизации изменений, произошедших в пределах документа 210 XML, с параллельным деревом 220, включая добавление или удаление узлов в пределах параллельного дерева 220. Примерный процесс, который включает в себя этапы добавления узла к параллельному дереву 220, описан со ссылками на фиг.6.

Фиг.3 показывает пример документа 210 XML и параллельное дерево 220, которые могут поддерживаться в соответствии с настоящим изобретением. Документ 210 XML включает в себя и элементы «родного» XML, и элементы «неродного» XML. Элемент в языке разметки обычно включает в себя открывающий тэг (обозначенный с помощью «<» и «>»), некоторое содержимое и закрывающий тэг (обозначенный с помощью « </» и «>»). В этом примере теги, связанные со схемой «родного» XML, включают в себя «w:» в пределах тэга (например, элемент 302), а теги, связанные со схемой «неродного» XML, включает в себя «r:» в пределах тэга (например, элемент 304). Считается, что теги, связанные с «родным» XML, связываются с пространством имен текстового процессора. Напротив, теги, которые связаны с «неродным» XML, упоминаются как связываемые с другим пространством имен, в этом примере - с пространством имен «resume» (продолжение). Элементы документа 210 XML могут дополнительно включать в себя содержимое. Например, элемент «Work» (работа) содержится в элементе «objective» (цель), и «123 Main» (123 Главная) содержится в элементе «street» (улица). Элемент «address» (адрес) включает в себя элемент «street». Эти элементы определяются согласно схеме «неродного» XML, соответствующей пространству имен «resume» (например, схема «resume»), которое было предварительно обеспечено пользователем или другим приложением. Префиксы «w:» и «r:» служат стенографическим примечанием для XML для этих соответствующих пространств имен.

Параллельное дерево 220 включает в себя узел (например, узлы 322, 324, 326) для каждого элемента «неродного» XML в пределах документа 210 XML. В одном из вариантов осуществления параллельное дерево 220 поддерживается средством 225 проверки правильности отдельно от текстового процессора 120 (см. фиг.2). Параллельное дерево 220 модифицируется в режиме реального времени, когда документ 210 XML изменяется. Параллельное дерево 220 позволяет текстовому процессору 120 по существу игнорировать элементы «родного» XML, поскольку оно проверяет правильность документа 210 XML по отношению к схеме «неродного» XML 215. Другими словами, элементы «неродного» XML фактически прозрачны (не заметны) для элементов «неродного» XML, когда параллельное дерево 220 обеспечивается для средства проверки правильности для проверки правильности. Затем параллельное дерево 220 может проверяться на правильность отдельно от любых элементов «родного» XML, как описано ниже дополнительно в связи с фиг.7.

Как показано, параллельное дерево 220 включает в себя содержимое, связанное с каждым элементом «неродного» XML. В другом варианте осуществления содержимое не копируется в параллельное дерево 220 до тех пор, пока параллельное дерево не передают на средство 225 проверки правильности для проверки правильности. В еще одном варианте осуществления содержимое, которое копируется в параллельное дерево 220, ограничивается тем содержимым, которое связано с частью параллельного дерева 220, которая будет проверяться на правильность. Проверка правильности параллельного дерева 220 описана дополнительно вместе с описанием фиг.7.

Фиг.4 изображает структурную схему примера документа 410 XML и параллельного дерева 420, которые включают в себя ошибки. Документ 410 XML и параллельное дерево 420 подобны документу 210 XML и параллельному дереву 220, показанным на фиг.3, однако ошибка (относительно схемы «неродного» XML 215) была добавлена к разметке «неродного» XML. Ошибка представлена ошибочным элементом 432, который является почтовым индексом. В соответствие со схемой 215 «неродного» XML элемент «zip» (почтовый индекс) является «дочерним» элементом элемента «address», или элементом одного уровня с элементом «street». Однако, в иллюстрированном примере, элемент «zip» является недопустимым, так как элемент «zip» был размещен, как «дочерний» элемент элемента «street». В соответствии с изобретением параллельное дерево 420 отражает, что элемент «zip» был вставлен как «дочерний» элемент элемента «street». Соответственно, когда параллельное дерево 420 (или некоторое соответствующее поддерево, которое включает в себя элемент «street») проверяется на правильность по отношению к схеме 215 «неродного» XML, возвращается ошибка. В этом примере текстовый процессор 120 идентифицирует ошибку в пределах документа 410 XML с помощью подчеркивания, однако для указания ошибки могут использоваться другие индикаторы отображения.

Параллельное дерево 420 также включается в индикацию ошибки, где значок 442 показывает, что узел 422 «zip» имеет соответствующую ошибку. В другом варианте осуществления другие индикаторы отображения могут использоваться в пределах параллельного дерева 420 для указания присутствия ошибки, связанной с узлом. Согласно показанному примеру, щелкая правой кнопкой мыши на подчеркнутом(ых) элементе(ах) (например, ошибочный элемент 432) в пределах документа 410 XML генерируют отображение 430 ошибки (например, меню, выводимое по щелчку правой кнопкой мыши). Отображение 430 ошибки указывает подробную информацию об ошибке, например, тип ошибки. Отображение 430 ошибки может также включать в себя предлагаемые действия для пользователя в попытке исправить ошибку. Предлагаемые действия могут быть интерактивны, давая возможность пользователю выбрать из списка возможных решений для существующей ошибки.

Кроме того, располагая указатель над значком 442, можно отобразить другую информацию для пользователя, такую как подсказка 440. «Подсказка» обычно относится к не являющемуся интерактивным элементу отображения, который обеспечивает пользователя дополнительной информацией. Например, показанная подсказка обеспечивает текстовое уведомление, что «элемент «zip» (почтовый индекс) не может быть внутри элемента «street» (улица)». В одном из вариантов осуществления или значок 442, или ошибочный элемент 432 могут быть выбраны или на них может быть наведен указатель мыши для того, чтобы отобразить или отображение 430 ошибки или подсказку 440. Примерный процесс, относящийся к отображению индикаторов ошибки в пределах документа 410 XML и параллельного дерева 420, описан при обсуждении фиг.8.

ОБНАРУЖЕНИЕ, ПРОВЕРКА ПРАВИЛЬНОСТИ И ВЫДАЧА СООБЩЕНИЯ ОБ ОШИБКАХ

Фиг.5 - логическая схема последовательности операций примерного процесса проверки правильности документа XML и выдачи сообщения о нарушениях схемы в соответствии с настоящим изобретением. Процесс 500 начинается на этапе 501, где документ XML редактируется и где произошло изменение. «Изменение» относится к вставке, изменению или удалению элементов XML в пределах документа XML или изменения текстового содержимого элементов «неродного» XML. В ответ на это изменение обработка продолжается на этапе 502.

На этапе 502 в пределах документа XML определяется местоположение того изменения, которое произошло с документом XML. Некоторые изменения, такие как добавление новых элементов, могут потребовать дополнительную обработку для добавления соответствующих узлов к параллельному дереву. Примерный процесс определения местоположения и обработки изменений в пределах документа XML описан далее со ссылками на фиг.6. Обработка продолжается на этапе 503.

На этапе 503 часть документа XML, которая была изменена, помечается как «загрязненная». Пометка «загрязненный» относится к тем частям документа XML, которые еще должны проверяться на правильность или чья правильность больше не гарантируется из-за изменения. Идентификатор или другой индикатор может быть связан с частью документа XML, где произошло изменение. В одном из вариантов осуществления «родительский» элемент любого элемента, который был изменен, удален или добавлен, маркируются как «загрязненный». Когда процесс 500 переходит к проверке правильности «загрязненной» части, средство проверки правильности проверяет правильность «родительского» элемента и «дочерних» элементов этого «родительского» элемента. Обработка продолжается в соответствии с этапом 504.

На этапе 504 узлы параллельного дерева, соответствующие той части документа XML, которая была изменена, также маркируются как «загрязненные». Идентификатор или другой индикатор может быть связан с узлами параллельного дерева, соответствующим тем местам, где произошло изменение. В одном из вариантов осуществления уникальный идентификатор, который связан с каждым элементом в пределах документа XML и каждым узлом параллельного дерева, маркируется как «загрязненный», таким образом одновременно отмечая как «загрязненные» и часть документа XML, и узлы параллельного дерева. Обработка продолжается на этапе 505 принятия решения.

На этапе 505 принятия решения происходит определение, достиг ли пользователь, создающий или редактирующий документ XML, момента неактивного состояния или превышения времени ожидания. Неактивное состояние относится к моменту времени, когда пользователь в настоящее время не обеспечивает ввода пользовательской информации в текстовый процессор. Превышение времени ожидания относится к ситуации, когда неактивное состояние не возникло в течение предопределенного времени. Если прошло достаточное время, то возникнет условие превышения времени ожидания. Обработка зацикливается на этапе 505 до тех пор, пока не возникнет неактивное состояние или условие превышения времени ожидания. Когда достигнуто неактивное состояние или возникает условие превышения времени ожидания, обработка продолжается на этапе 506.

На этапе 506 «загрязненный» узел или узлы параллельного дерева проверяются на правильность с помощью средства проверки правильности. Параллельное дерево является объектом средства проверки правильности или связано с ним, так что дерево не должно быть передано к средству проверки правильности для проверки правильности. Примерный процесс проверки правильности «загрязненного(ых)» узла(лов) параллельного дерева описан далее со ссылками на фиг.7. Обработка продолжается на этапе 507 принятия решения.

На этапе 507 принятия решения определяют, существует ли ошибка в элементах «неродного» XML документа XML согласно информации об ошибке, возвращенной средством проверки правильности. Средство проверки правильности возвращает данные об ошибке в текстовый процессор, которые указывают правильность каждого узла в пределах параллельного дерева, проанализированного средством проверки правильности. В одном из вариантов осуществления данные об ошибке включают в себя тип ошибки, которая произошла в текстовом процессоре. Если ошибок нет, то обработка переходит к этапу 509, где обработка заканчивается. Если ошибка существует, то обработка продолжается на этапе 508.

На этапе 508 пользователь уведомляется об ошибке в проверяемых элементах «неродного» XML согласно индикаторам отображения в пределах документа XML и в пределах параллельного дерева. Примерный процесс выдачи пользователю сообщения о произошедших ошибках описан далее со ссылками на фиг.8. Обработка продолжается на этапе 509, где обработка заканчивается.

Фиг.6 представляет логическую схему последовательности операций примера процесса определения местоположения и обработки изменений в пределах документа XML в соответствии с настоящим изобретением. Процесс 600 начинается на этапе 601, когда процесс 500, показанный на фиг.5, переходит к этапу 502. Обработка продолжается на этапе 602.

На этапе 602 определяется «родительский» элемент той части документа XML, которая изменилась. Например, на фиг.4 элемент «street» в документе 410 XML является «родительским» элементом элемента 432 «zip». В одном из вариантов осуществления «родительский» элемент определяется таким образом, чтобы поддерево параллельного узла, которое включает в себя «родительский» и «дочерние» элементы этого «родительского» элемента, могло быть маркировано как «загрязненное». Проверка правильности этого «родительского» элемента и его дочерних элементов гарантирует, что весь документ XML правилен, потому что в типовом варианте изменение не должно влиять на правильность других элементов, кроме непосредственно «родительского» элемента измененного узла. Определение «родительского» элемента также помогает при синхронизации параллельного дерева с документом XML. «Родительский» элемент может в таком случае использоваться как индикатор местоположения изменений в пределах документа XML. В одном из вариантов осуществления идентификатор, связанный с «родительским» элементом измененного элемента, сохраняется в данных 240 синхронизации, показанных на фиг.2. Обработка продолжается на этапе 603.

В соответствии с этапом 603 самый близкий элемент одного уровня изменяемого элемента(ов) определяется с помощью текстового процессора. Например, на фиг.3 элемент «objective» и элемент «address» считают элементами одного уровня. Определение самого близкого элемента одного уровня помогает при синхронизации параллельного дерева с документом XML. Самый близкий элемент одного уровня обеспечивает второй индикатор местоположения изменений в документе XML. В одном из вариантов осуществления идентификатор, связанный с «родительским» элементом измененного элемента, сохраняется в данных 240 синхронизации, показанных на фиг.2. В другом варианте осуществления также определяется, находится ли самый близкий элемент одного уровня выше или ниже элемента, изменяемого в документе XML. Обработка продолжается в соответствии с этапом 604 принятия решения.

На этапе 604 принятия решения определяют, требует ли изменение создания нового узла в параллельном дереве. Новый узел требуется, когда новый элемент «неродного» XML генерируется в документе XML. Новый узел создается в режиме реального времени для поддержания синхронизации документа XML и параллельного дерева. Когда новый узел не требуется, обработка переходит к этапу 609, откуда обработка возвращается на этап 503 процесса 500. Однако, если требуется новый узел, то обработка переходит к этапу 605.

На этапе 605 создается идентификатор, который соответствует новому элементу в документе XML. Идентификатор однозначно идентифицирует элемент в пределах документа XML. Обработка продолжается на этапе 606.

На этапе 606 в пределах параллельного дерева генерируется узел, который не имеет «родительской» вершины. Узел, не имеющий «родительской» вершины, в настоящее время не идентифицируется «родительской» вершиной в пределах параллельного дерева. Обработка продолжается на этапе 607.

На этапе 607 идентификатор, относящийся к элементу, сгенерированному в пределах документа XML, связывается с узлом, не имеющим «родительского» узла. Связь идентификатора с узлом, не имеющим «родительской» вершины, позволяет текстовому процессору соотнести узел с позицией нового элемента в пределах документа XML. В одном из вариантов осуществления «родительский» элемент и самый близкий элемент одного уровня были определены для нового элемента в пределах документа XML, и соответственно, также определяются «родительская» вершина и самый близкий узел одного уровня в пределах параллельного дерева. Обработка продолжается на этапе 608.

На этапе 608 «родительской» вершине в пределах параллельного дерева, которая соответствует «родительскому» элементу нового элемента в пределах документа XML, дается команда для принятия узла, не имеющего «родительской» вершины. Новый узел затем отображается в правильной позиции в пределах параллельного дерева, синхронизируя документ XML и параллельное дерево. Обработка продолжается в соответствии с этапом 609, откуда обработка возвращается на этап 503 процесса 500.

Фиг.7 изображает логическую схему последовательности операций примерного процесса проверки правильности документа XML в соответствии с настоящим изобретением. Процесс 700 начинается на этапе 701, когда процесс 500, показанный на фиг.5, переходит к этапу 506. Обработка продолжается на этапе 702.

На этапе 702 содержимое, связанное с элементами «неродного» XML, которые будут проверяться на правильность, копируются в параллельное дерево. В одном из вариантов осуществления первоначально параллельное дерево не включает в себя содержимое документа XML. Если бы параллельное дерево включало в себя содержимое, то объем памяти, требуемый для параллельного дерева, был бы почти равен объему памяти, требуемому для документа XML. Копирование содержимого в параллельное дерево непосредственно перед проверкой правильности минимизирует объем памяти, требуемый для параллельного дерева. В другом варианте осуществления содержимое, скопированное в параллельное дерево, ограничивается содержимым, связанным с элементами «неродног