система и способ проверки правильности документов xml и выдачи сообщения о нарушениях схемы
Классы МПК: | G06F17/21 обработка текста G06F17/27 автоматический анализ, например, синтаксический разбор, коррекция орфографических ошибок G06F17/22 манипулирование или регистрация с помощью кодов, например, в последовательности символов текста |
Автор(ы): | ДЖОУНЗ Брайан Майкл (US), САВИЦКИ Марсин (US), ЛИТТЛ Роберт А. (US) |
Патентообладатель(и): | МАЙКРОСОФТ КОРПОРЕЙШН (US) |
Приоритеты: |
подача заявки:
2003-06-26 публикация патента:
27.06.2008 |
Изобретение относится к способам проверки правильности документа расширяемого языка разметки (XML) и выдачи сообщения о нарушениях схемы в режиме реального времени. Техническим результатом является обеспечение проверки правильности документа XML и сообщения о нарушениях схемы в режиме реального времени, когда пользователь редактирует документ. Поддерживается параллельное дерево, которое включает в себя узлы, соответствующие элементам «неродного» XML документа XML. Когда изменения происходят в документе XML, отмечаются элементы «неродного» XML, соответствующие изменениям. Узлы, соответствующие отмеченным элементам «неродного» XML, проверяются на правильность по отношению к схеме XML, которая соответствует разметке «неродного» XML. Об элементах и узлах, соответствующих ошибкам в разметке «неродного» XML, затем сообщают пользователю согласно индикаторам отображения в документе XML и параллельном дереве. 3 н. и 17 з.п. ф-лы, 8 ил.
(56) (продолжение):
CLASS="b560m"4.9, 4.12, 5.1.1, 5.1.3, 5.2.1, 5.2.2, 5.3.1, 5.3.3, 5.4, фиг.5.2 на с.54, разделы 5.4.1, 5.4.2, 5.5.1, 5.5.2, 6.2, 6.3, 7.2. MURATA M. "Prototipycal implementation of "Divvide and Vali-date", 07.03.2001, http://www.xml.gr.jp/relax/divideAndValidate.html. ENGLISH J. "RE: Question about Namespaces and DTDs", 25.07.2000, http://lists.xml.org/archives/xml-dev/200007/msg00795.html. RU 2136038 C1 (КАТЕРПИЛЛАР ИНК.), 27.08.1999.
Формула изобретения
1. Способ проверки правильности и выдачи уведомления о нарушениях схемы для документа на расширяемом языке разметки (XML), при этом документ XML включает в себя родной (собственной) XML и неродной (несобственной) XML, данный способ содержит этапы:
определяют местоположение изменения элемента неродного XML в пределах документа XML,
маркируют часть документа XML для того, чтобы показать, что изменение произошло по отношению к этой части документа XML,
маркируют узел в параллельном дереве, ассоциированном с неродным XML, чтобы показать, что произошло изменение для неродного XML, причем данный узел соответствует той части документа XML, где произошло изменение, и при этом параллельное дерево выборочно включает в себя элементы неродного XML и не включает элемент родного XML, при этом элемент родного XML ассоциирован с соответствующей схемой родного XML, а элемент неродного XML ассоциирован с соответствующей схемой неродного XML;
проверяют правильность узла параллельного дерева по отношению к соответствующей схеме неродного XML, так что проверяется правильность части XML документа, в которой имело место изменение элемента неродного XML;
определяют, существует ли ошибка в элементе неродного XML, исходя из данных об ошибке, доставленных в ответ на проверку правильности узла, и
отображают уведомление об ошибке в пределах документа XML и параллельного дерева, если ошибка произошла.
2. Способ по п.1, в котором этап определения местоположения изменений элементов неродного XML дополнительно содержит этапы:
идентифицируют родительский элемент для каждого элемента неродного XML, в котором произошло изменение, и
идентифицируют самый близкий элемент, имеющий этот же родительский элемент, для каждого элемента неродного XML, в котором произошло изменение.
3. Способ по п.1, дополнительно содержащий генерацию нового узла в параллельном дереве, когда новый элемент неродного XML генерируется в документе XML.
4. Способ по п.3, в котором генерация нового узла дополнительно содержит этапы:
создают идентификатор, который соответствует новому элементу неродного XML, так что родительский элемент и элемент, имеющий этот же родительский элемент, для упомянутого нового элемента неродного XML могут быть определены из упомянутого идентификатора,
создают не имеющий родительской вершины узел в параллельном дереве,
связывают упомянутый идентификатор с не имеющим родительской вершины узлом, и
дают команду родительской вершине, соответствующей родительскому элементу, чтобы она стала родительским узлом для не имеющего родительской вершины узла.
5. Способ по п.1, в котором проверка правильности узлов параллельного дерева дополнительно содержит этапы:
копируют контент в параллельное дерево, причем этот контент связан с той частью документа XML, где произошло изменение,
проверяют правильность узлов, которые включают в себя упомянутый контент, по отношению к соответствующей схеме неродного XML, и
удаляют упомянутый контент из параллельного дерева, так что объем памяти для параллельного дерева минимизируется.
6. Способ по п.5, в котором проверка правильности узлов, которые включают в себя контент, по отношению к соответствующей схеме неродного XML включает в себя исследование параллельного дерева с помощью средства проверки правильности XML согласно схеме неродного XML.
7. Способ по п.1, в котором перед проверкой правильности узла параллельного дерева дополнительно содержится этап определения возникновения условия превышения времени ожидания или неактивного состояния.
8. Способ по п.1, в котором отображение уведомления об ошибке дополнительно содержит этапы:
указывают часть документа XML, где произошла ошибка, согласно первому индикатору отображения, и
указывают узлы параллельного дерева, которые соответствуют той части документа XML, где произошла ошибка, согласно второму индикатору отображения.
9. Способ по п.8, в котором ввод пользовательской информации, соответствующей по меньшей мере одному из первого индикатора отображения и второго индикатора отображения, производит отображение ошибки, которое выдает информацию, относящуюся к ошибке, и позволяет выполнять интерактивные действия в отношении ошибки.
10. Способ по п.8, в котором ввод пользовательской информации, соответствующей по меньшей мере одному из первого индикатора отображения и второго индикатора отображения, вызывает подсказку, которая обеспечивает текстовую информацию, относящуюся к ошибке.
11. Считываемый компьютером носитель, имеющий выполняемые компьютером программные компоненты для осуществления проверки правильности документа на расширяемом языке разметки (XML), содержащий:
первый программный компонент для генерации документа на расширяемом языке разметки (XML), который включает в себя первый тип элементов, связанных с первой схемой XML, и второй тип элементов, связанных со второй схемой XML, причем упомянутый первый компонент выполнен с возможностью представления отображения, показывающего, что по меньшей мере один из первого типа элементов нарушает первую схему XML,
второй компонент для выборочного сохранения узлов, которые связаны со вторым типом элементов и второй схемой XML и исключения узлов, которые связаны с первым типом элементов и первой схемой XML, причем каждый узел связан с соответствующим элементом, созданным первым программным компонентом, причем первый программный компонент и второй программный компонент синхронизируются, и
третий программный компонент для проверки правильности элементов, связанных с упомянутыми узлами, причем третий компонент настраивается так, чтобы возвращать данные об ошибке первому программному компоненту в ответ на нарушение проверки правильности, причем эти элементы проверяются на правильность в ответ на изменение в элементах, связанных с упомянутыми узлами.
12. Считываемый компьютером носитель по п.11, дополнительно содержащий четвертый программный компонент, соответствующий данным об ошибке, который генерируется, когда вводимая пользователем информация взаимодействует с индикатором, который отображается в пределах по меньшей мере одного из документа XML и второго программного компонента.
13. Считываемый компьютером носитель по п.12, в котором четвертый программный компонент дополнительно выполнен с возможностью отображать информацию, относящуюся к ошибке, соответствующую данным об ошибке, которая включает в себя по меньшей мере одно из типа ошибки, инструкций для исправления ошибки и формулировки ошибки.
14. Считываемый компьютером носитель, имеющий выполняемые компьютером команды для проверки правильности и выдачи уведомления о нарушениях схемы документа на расширяемом языке разметки (XML), при этом документ XML включает в себя родной XML и неродной XML, а упомянутые команды содержат этапы:
определяют изменение в элементе неродного XML в пределах документа XML,
создают новый узел в параллельном дереве, если изменение соответствует созданию нового элемента неродного XML в пределах документа XML, при этом параллельное дерево выборочно включает в себя элементы неродного XML и не включает элемент родного XML, при этом элемент родного XML ассоциирован с соответствующей схемой родного XML, а элемент неродного XML ассоциирован с соответствующей схемой неродного XML;
маркируют часть документа XML, которая затронута изменением,
маркируют узел в параллельном дереве для того, чтобы показать, что произошло изменение, причем данный узел соответствует той части документа XML, которую затрагивает изменение,
проверяют правильность отмеченного узла параллельного дерева по отношению к соответствующей схеме, так что проверяется правильность части XML документа, в которой имело место изменение элемента неродного XML;
определяют, существует ли ошибка в элементе неродного XML, исходя из информации об ошибке, выданной в ответ на проверку правильности узла, и
если да, то отображают уведомление об ошибке в документе XML и параллельном дереве.
15. Считываемый компьютером носитель по п.14, в котором определение изменений в элементах неродного XML дополнительно содержит этапы:
идентифицируют родительский элемент для каждого элемента неродного XML, в котором произошло изменение, и
идентифицируют самый близкий элемент, имеющий этот же родительский элемент, для каждого элемента неродного XML, в котором произошло изменение.
16. Считываемый компьютером носитель по п.14, в котором генерация нового узла дополнительно содержит этапы:
создают идентификатор, который соответствует новому элементу неродного XML, так что родительский элемент и элемент, имеющий этот же родительский элемент для этого нового элемента «неродного» XML, могут быть определены из упомянутого идентификатора,
создают не имеющий родительской вершины узел в параллельном дереве,
связывают упомянутый идентификатор с не имеющим родительской вершины узлом, и
дают указание родительской вершине, соответствующей родительскому элементу, чтобы она стала родительским узлом для не имеющего родительской вершины узла.
17. Считываемый компьютером носитель по п.14, в котором проверка правильности узлов параллельного дерева дополнительно содержит этапы:
копируют контент в параллельное дерево, при этом контент соответствует упомянутой части документа XML,
проверяют правильность узлов, которые включают в себя упомянутый контент, по отношению к соответствующей схеме неродного XML, и
удаляют упомянутый контент из параллельного дерева, так что объем памяти для параллельного дерева минимизируется.
18. Считываемый компьютером носитель по п.14, в котором отображение уведомления об ошибке дополнительно содержит этапы:
индицируют часть документа XML, где произошла ошибка, согласно первому индикатору отображения, и
индицируют узлы параллельного дерева, которые соответствуют той части документа XML, где произошла ошибка, согласно второму индикатору отображения.
19. Считываемый компьютером носитель по п.18, в котором ввод пользовательской информации, соответствующей по меньшей мере одному из первого индикатора отображения и второго индикатора отображения, вызывает отображение ошибки, которое обеспечивает интерактивную информацию, относящуюся к ошибке.
20. Считываемый компьютером носитель по п.18, в котором ввод пользовательской информации, соответствующей по меньшей мере одному из первого индикатора отображения и второго индикатора отображения, вызывает подсказку, которая обеспечивает текстовую информацию относительно ошибки.
Описание изобретения к патенту
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
В последние годы языки разметки достигли широкой популярности. Один из видов языка разметки, расширяемый язык разметки (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. Копирование содержимого в параллельное дерево непосредственно перед проверкой правильности минимизирует объем памяти, требуемый для параллельного дерева. В другом варианте осуществления содержимое, скопированное в параллельное дерево, ограничивается содержимым, связанным с элементами «неродного» XML, отмеченными как «загрязненные». Обработка продолжается на этапе 703.
На этапе 703 узел(лы), отмеченный(е) как «загрязненный(е)», и связанное с ними содержимое проверяется на правильность по отношению к схеме «неродного» XML с помощью средства проверки правильности. Схема «неродного» XML устанавливает, какие теги и атрибуты используются для описания содержимого в элементах «неродного» XML документа XML, где разрешается каждый из тэгов, какое содержимое является приемлемым и какие элементы могут появляться в пределах других элементов. Параллельное дерево XML является правильным, когда оно придерживается схемы «неродного» XML. После завершения проверки правильности обработка переходит к этапу 704.
На этапе 704 содержимое, которое параллельное дерево включает в себя для целей проверки правильности, удаляется из параллельного дерева. Удаление содержимого из параллельного дерева дополнительно минимизирует объем памяти, требуемый для параллельного дерева. Обработка продолжается на этапе 705, откуда обработка возвращается к этапу 507 процесса 500, показанного на фиг.5.
На фиг.8 представлена логическая схема последовательности операций примерного процесса отображения ошибок в документе XML и параллельном дереве в соответствии с настоящим изобретением. Процесс 800 начинается на этапе 801, когда процесс 500 показанный на фиг.5, переходит на этап 508, и было определено, что ошибки существуют в пределах элементов «неродного» XML документа XML. Обработка продолжается на этапе 802.
На этапе 802 элемент(ы), определяемый(е) средством проверки правильности как имеющий(ие) ошибки, подчеркивается в документе XML. Следует признать, что другие индикаторы отображения (например, выделение жирным шрифтом, выделение курсивом, волнистые линии и т.д.) могут использоваться для определения элементов в пределах документа XML, как имеющие ошибки. Обработка продолжается на этапе 803.
На этапе 803 помечается узел(лы) параллельного дерева, соответствующий ошибочному элементу(ам) документа XML. В одном из вариантов осуществления рядом с узлом помещается значок для того, чтобы показать, что соответствующий узлу элемент содержит ошибку. В одном из вариантов осуществления значок зависит от типа ошибки, которая произошла в связи с ошибочным элементом. Обработка продолжается на этапе 804 принятия решения.
На этапе 804 происходит определение, щелкнул ли пользователь правой кнопкой мыши на ошибке, выделенной в документе XML. Если щелчка правой кнопкой мыши не происходит, то обработка переходит к этапу 806. Однако, если щелчок правой кнопкой мыши происходит, то обработка продолжается на этапе 805.
На этапе 805 в ответ на щелчок правой кнопкой мыши пользователю представляется отображение ошибки, которое дает подробную информацию относительно произошедшей ошибки и инструкцию для исправления ошибки. В другом варианте осуществления ввод другой пользовательской информации, а не щелчок правой кнопкой мыши, может использоваться для начала отображения ошибки. Отображение ошибки описано дополнительно выше при описании фиг.4. Обработка продолжается на этапе 806 принятия решения.
На этапе 806 принятия решения определяют, располагает ли пользователь указатель мыши над значком в параллельном дереве. Если пользователь не расположил указатель мыши над ошибкой, то обработка переходит к этапу 808, откуда обработка возвращается к этапу 509 процесса 500, показанного на фиг.5. Когда указатель мыши располагается над значком, обработка продолжается на этапе 807.
На этапе 807 отображается всплывающая подсказка пользователю в ответ на наведение указателя мыши на значок в параллельном дереве. В одном из вариантов осуществления текст подсказки обеспечивает простое утверждение, которое описывает ошибку, которая произошла. Например, если некоторый элемент должен включать в себя содержимое, текст подсказки может читаться как «этот элемент не может быть пуст». В одном из вариантов осуществления другая вводимая пользователем информация, а не наведение указателя мыши на значок, может использоваться для отображения подсказки. Примеры значка и подсказки показаны на фиг.4. Обработка продолжается на этапе 808, откуда обработка возвращается к этапу 509 процесса 500, показанного на фиг.5.
Вышеприведенные описание, примеры и данные обеспечивают законченное описание изготовления и использования состава изобретения. Поскольку множество вариантов осуществления изобретения могут быть сделаны без отрыва от объекта и формы изобретения, данное изобретение определяется прилагаемой формулой изобретения.
Класс G06F17/21 обработка текста
Класс G06F17/27 автоматический анализ, например, синтаксический разбор, коррекция орфографических ошибок
Класс G06F17/22 манипулирование или регистрация с помощью кодов, например, в последовательности символов текста