СПОСОБ И СИСТЕМА ДЛЯ ПРЕОБРАЗОВАНИЯ ИЕРАРХИЧЕСКОЙ СТРУКТУРЫ ДАННЫХ НА ОСНОВЕ СХЕМЫ В ПЛОСКУЮ СТРУКТУРУ ДАННЫХ
METHOD AND SYSTEM FOR CONVERTING HIERARCHICAL DATA STRUCTURE BASED ON SCHEMA TO PLANAR DATA STRUCTURE

Область техники, к которой относится изобретение
Настоящее изобретение относится, в целом, к преобразованию высокоиерархических структур данных в неиерархические (плоские) структуры данных. В частности, настоящее изобретение относится к получению входных данных, связанных со схемой (логической структурой записи в базах данных) в стандартном формате, и преобразованию их в плоскую структуру табличных данных на основании этой схемы.
Предшествующий уровень техники
Исторически сложилось так, что компьютерные системы и базы данных содержат данные в несовместимых форматах. По мере автоматизации и компьютеризации организаций, использующих эти системы и базы данных, потребность в совместном использовании данных в компьютерных сетях, например, сети Интернет, становится более и более насущной. Эта потребность привела к разработке стандартных форматов для совместного использования данных.
В том числе был разработан формат расширяемого языка разметки (XML). XML является очень иерархическим форматом данных, который содержит множество структур данных, связанных между собой отношением «родитель-потомок». В формате данных XML потомки каждого родительского элемента могут сами иметь потомков, которые в свою очередь могут иметь своих потомков, и т.д. С появлением этого стандартного формата данных многие пользователи компьютеров преобразовали вышеупомянутые базы данных в стандартный формат данных XML. Формат XML также позволяет пользователям компьютеров приспосабливать свои данные к конкретным документам с использованием схем. Схемы обеспечивают механизмы задания и описания структуры, содержимого и, до некоторой степени, семантики документов XML.
Совместно с компьютеризацией современного бизнеса появилось множество полезных прикладных программ, включая программы, использующие электронные таблицы. Электронные таблицы обычно оперируют данными, содержащимися в матрице ячеек, образующих строки и столбцы. В общем случае, этот формат данных заключен в одной таблице и представляет собой очень плоскую структуру данных, в которой данные не хранятся в виде иерархической структуры данных, используемой XML.
Благодаря доступности персональных компьютеров, многие пользователи приобрели опыт в их использовании и, конкретно, в использовании прикладных программ электронных таблиц. Хотя электронные таблицы обладают большими преимуществами над прежними традиционными средствами, они также используют плоскую структуру данных. Что касается больших объемов данных, хранящихся в иерархических форматах, например, XML, электронная таблица, со своей плоской структурой данных, не имеет средств доступа к этим массивам данных, поэтому возникла необходимость в средствах доступа к ним с помощью электронной таблицы. Хотя в настоящее время имеются программы, способные преобразовывать данные в формате XML в данные электронной таблицы, современным программам не удается учитывать соотношения между данными, заданные в схемах, связанных с документами в иерархических форматах. В результате отображение иерархических данных, содержащихся в документе, в электронной таблице, с использованием современных программ может значительно отличаться от отображения, предусмотренного автором документа.
Эти и другие соображения легли в основу настоящего изобретения.
Сущность изобретения
Для решения вышеперечисленных и других проблем, настоящее изобретение обеспечивает способ и систему для преобразования иерархической структуры данных в плоскую структуру данных, пригодную для использования в электронных таблицах, на основании схемы, связанной с иерархической структурой данных.
В соответствии с одним аспектом настоящего изобретения обеспечены способ и система для преобразования иерархической структуры данных в плоскую структуру данных на основании схемы. Форматом иерархической структуры данных может быть XML.
Прежде всего, иерархическую структуру данных, отвечающую схеме, загружают в прикладную программу. Структура данных содержит элементы и атрибуты, связанные друг с другом отношением «родитель-потомок». Схема задает иерархические отношения между элементами и атрибутами в иерархической структуре данных.
Затем на основании схемы к иерархическим данным применяют совокупность правил размещения. Правила размещения определяют то, как иерархические данные должны быть вставлены в полученную плоскую структуру данных. Правила размещения можно применять, идентифицируя свойства в схеме, которые идентифицируют требования к появлению элементов, заданных в схеме. Эти свойства могут включать в себя задание порядка появления элементов в иерархических данных и число раз, которое может появиться каждый элемент. После идентификации свойств к иерархическим данным применяют правила размещения на основании идентифицированных свойств. Правила размещения можно также применять на основании типа элементов, заданного в схеме. Эти типы элементов могут включать в себя атрибуты, элементы-предки и элементы-братья.
Наконец, правила размещения применяют к иерархическим данным для создания плоской структуры данных, а затем плоскую структуру данных переводят в электронную таблицу, вставляя данные в строки и столбцы.
Аспекты изобретения можно реализовать в виде компьютерного процесса, вычислительной системы или изделия производства, например, компьютерного программного продукта или машинно-читаемого носителя. Компьютерный программный продукт может представлять собой компьютерную среду хранения, считываемую компьютерной системой и кодирующую компьютерную программу, состоящую из команд для выполнения компьютерного процесса. Компьютерный программный продукт может также представлять собой распространенный сигнал на носителе, считываемом вычислительной системой, и кодирующий компьютерную программу, состоящую из команд для выполнения компьютерного процесса.
Эти и другие признаки, а также преимущества настоящего изобретения явствуют из нижеследующего подробного описания, приведенного со ссылками на прилагаемые чертежи.
Перечень чертежей
Фиг.1 - блок-схема компьютерной системы, которая обеспечивает иллюстративную операционную среду настоящего изобретения.
Фиг.2 - блок-схема алгоритма преобразования данных XML в плоскую структуру данных на основании входных данных схемы XML согласно варианту осуществления настоящего изобретения.
Фиг.3 - блок-схема алгоритма применения правил размещения к данным XML согласно различным вариантам осуществления настоящего изобретения.
Фиг.4 - моментальный снимок экрана, иллюстрирующий плоскую структуру данных, полученную в результате преобразования данных XML согласно иллюстративному варианту осуществления настоящего изобретения.
Фиг.5 - моментальный снимок экрана, иллюстрирующий плоскую структуру данных, полученную в результате преобразования данных XML согласно иллюстративному варианту осуществления настоящего изобретения.
Фиг.6 - моментальный снимок экрана, иллюстрирующий плоскую структуру данных, полученную в результате преобразования данных XML согласно иллюстративному варианту осуществления настоящего изобретения.
Фиг.7 - моментальный снимок экрана, иллюстрирующий плоскую структуру данных, полученную в результате преобразования данных XML согласно иллюстративному варианту осуществления настоящего изобретения.
Фиг.8 - моментальный снимок экрана, иллюстрирующий плоскую структуру данных, полученную в результате преобразования данных XML согласно иллюстративному варианту осуществления настоящего изобретения.
Фиг.9 - моментальный снимок экрана, иллюстрирующий плоскую структуру данных, полученную в результате преобразования данных XML согласно иллюстративному варианту осуществления настоящего изобретения.
Фиг.10 - моментальный снимок экрана, иллюстрирующий плоскую структуру данных, полученную в результате преобразования данных XML согласно иллюстративному варианту осуществления настоящего изобретения.
Фиг.11 - моментальный снимок экрана, иллюстрирующий плоскую структуру данных, полученную в результате преобразования данных XML согласно иллюстративному варианту осуществления настоящего изобретения.
Подробное описание изобретения
Настоящее изобретение относится к способу и системе для приведения входных данных XML к плоскому представлению (уплощения входных данных XML) на основе схемы, связанной с этими данными. Один вариант осуществления настоящего изобретения предусматривает его применение в комплекте прикладных программ «ОФИС» (office), продаваемом корпорацией Майкрософт, Редмонд, Вашингтон. В целом, изобретение обеспечивает получение данных в формате иерархической структуры данных. Примером такого формата может служить XML, однако специалистам в данной области техники известно много других высокоиерархических структур баз данных.
Нижеследующее подробное описание приведено со ссылками на прилагаемые чертежи, составляющие его часть, которые иллюстрируют конкретные варианты осуществления или примеры. Обратившись к чертежам, в которых сходные элементы обозначены на нескольких фигурах сходными позициями, опишем аспекты настоящего изобретения и иллюстративную операционную среду.
На фиг.1 показана иллюстративная операционная среда для реализации иллюстративного варианта осуществления настоящего изобретения. В иллюстративной операционной среде настоящее изобретение может способствовать преобразованию структуры данных XML, согласующейся со схемой, в плоскую структуру данных на основании схемы. Однако специалистам в данной области техники известно, что изобретение можно осуществлять на практике в компьютерной операционной среде любого типа, например, в карманных устройствах, многопроцессорных системах, в программируемой бытовой электронике или бытовой электронике на основе микропроцессора, в миникомпьютерах, универсальных компьютерах и т.п. Изобретение также можно осуществлять на практике в распределенных вычислительных средах, где задачи решаются удаленными устройствами обработки данных.
Иллюстративный вариант осуществления настоящего изобретения будет описан в общем контексте программного модуля 36 уплощения XML, который принимает входные данные 38 схемы XML и данные из входных данных 37 XML и преобразует данные в плоскую структуру 39 данных на основании данных схемы. Плоскую структуру 39 данных можно вставлять посредством электронной таблицы в прикладную программу. Специалистам в данной области техники понятно, что изобретение можно реализовать в сочетании с различными другими программными модулями (не показаны). В целом, программные модули включают в себя процедуры, программы, компоненты, структуры данных и т.д., которые решают конкретные задачи или реализуют те или иные абстрактные типы данных. Кроме того, специалистам в данной области техники очевидно, что изобретение можно осуществлять на практике в компьютерных системах, конфигурации которых отличаются от показанной, подключенных посредством сети связи. В распределенной вычислительной среде программные модули могут размещаться как в локальных, так и в удаленных запоминающих устройствах.
Иллюстративная операционная среда 10 для реализации изобретения включает в себя традиционный персональный компьютер 20, содержащий процессор 21, системную память 22 и системную шину 23, которая подключает системную память к процессору 21. Системная память 22 включает в себя постоянную память (ПЗУ) 24 и оперативную память (ОЗУ) 25. Базовая система ввода/вывода 26 (BIOS), содержащая основные процедуры, помогающие переносить информацию между элементами персонального компьютера 20, например, при запуске, хранится в ПЗУ 24. Персональный компьютер 20 также содержит жесткий диск 27, привод 28 магнитного диска, например, для чтения или записи сменного диска 29, и привод 30 оптического диска, например, для чтения диска 31 CD-ROM или чтения, или записи другого оптического носителя. Жесткий диск 27, привод 28 магнитного диска и привод 30 оптического диска подключены к системной шине 23 посредством интерфейса 32 жесткого диска, интерфейса 33 привода магнитного диска и интерфейса 34 привода оптического диска соответственно. Приводы и соответствующие машинно-читаемые носители обеспечивают энергонезависимые запоминающие устройства персонального компьютера 20. Хотя описание вышеупомянутых машинно-читаемых носителей относится к жесткому диску, сменному магнитному диску и диску CD-ROM, специалистам в данной области техники очевидно, что в иллюстративной оперативной среде можно использовать и другие типы машинно-читаемых носителей, например, магнитные кассеты, карты флэш-памяти, цифровые видеодиски, картриджи Бернулли и т.п.
На дисках и в ОЗУ 25 могут храниться различные программные модули, например, операционная система 35, программный модуль 36 уплощения XML, входные данные 37 XML, входные данные 38 схемы XML, плоская структура данных 39 и другие программные модули (не показаны).
Пользователь может вводить команды и информацию в персональную компьютерную систему 20 через клавиатуру 40 и указательное устройство, например, мышь 42. Другие устройства ввода (не показаны) могут включать в себя микрофон, джойстик, игровую панель, спутниковую антенну, сканер и т.п. Для подключения этих и других устройств ввода к процессору 21 обычно используется интерфейс 46 последовательного порта, подключенный к системной шине, но могут использоваться и другие интерфейсы, например, игровой порт или универсальная последовательная шина (USB). Монитор 47 или устройство отображения другого типа также подключен к системной шине 23 через интерфейс, например, видеоадаптер 48. Помимо монитора, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), например, громкоговорители или принтеры.
Персональная компьютерная система 20 может работать в сетевой среде, используя логические соединения с одним или несколькими удаленными компьютерами, например, удаленным компьютером 49. Удаленный компьютер 49 может представлять собой сервер, маршрутизатор, одноранговое устройство или другой общий сетевой узел и обычно включает в себя многие или все элементы, описанные применительно к персональному компьютеру 20, хотя на фиг.1 изображено только запоминающее устройство 50. Логические соединения, указанные на фиг.1, включают в себя локальную сеть (ЛС) 51 и глобальную сеть (ГС) 52. Такие сетевые среды обычно имеют место в учреждениях, компьютерных сетях предприятия, интрасетях и сети Интернет.
При использовании сетевой среды ЛС, персональная компьютерная система 20 подключена к ЛС 51 через сетевой интерфейс 53. При использовании в сетевой среде ГС, персональный компьютер 20 обычно содержит модем 54 или иное средство установления связи через ГС 52, например, Интернет. Модем 54, который может быть внутренним или внешним, подключен к системной шине 23 через интерфейс 46 последовательного порта. В сетевой среде программные модули, указанные применительно к персональному компьютеру 20, или некоторые из них, могут храниться в удаленном запоминающем устройстве. Очевидно, что показанные сетевые соединения носят иллюстративный характер и что можно использовать другие средства установления линий связи между компьютерами. Кроме того, следует понимать, что изобретение также можно реализовать в компьютерных системах хоста или сервера, а не только в персональных компьютерных системах, а также можно передавать на компьютерную систему хоста не только посредством CD-ROM, но, например, посредством сетевого интерфейса 53.
Настоящее изобретение можно реализовать в динамически присоединяемой библиотеке (DLL). В качестве примера такой DLL может служить MSO.DLL, обеспеченная в комплекте прикладных программ «ОФИС», продаваемом корпорацией Майкрософт, Редмонд, Вашингтон. DLL содержит библиотеку исполняемых функций, доступ к которым может осуществлять прикладная программа при создании статического или динамического присоединения к DLL. Статическое присоединение остается постоянным в ходе выполнения программы, а динамическое присоединение создается программой при необходимости.
На фиг.2 проиллюстрирован алгоритм, осуществляемый программным модулем 36 уплощения XML для преобразования входных данных 37 XML в плоскую структуру данных 39 на основании входных данных 38 схемы XML в вышеописанной персональной компьютерной системе 20. Различные варианты осуществления настоящего изобретения предусматривают реализацию алгоритма (1) в виде последовательности реализуемых на компьютере действий или программных модулей, выполняющихся в вычислительной системе и/или (2) в виде соединенных между собой схем машинной логики или схемных модулей, входящих в состав вычислительной системы. Выбор варианта реализации зависит от требований к производительности вычислительной системы, в которой применяется изобретение. Соответственно, описанный здесь алгоритм, составляющий варианты осуществления настоящего изобретения, можно рассматривать как операции, структурные устройства, действия или модули. Специалистам в данной области техники известно, что эти операции, структурные устройства, действия и модули можно реализовать программными или программно-аппаратными средствами, а также в специализированных цифровых логических устройствах или посредством любого их сочетания, не выходя за рамки сущности и объема настоящего изобретения, определяемых прилагаемой формулой изобретения.
Алгоритм начинается с операции 210 загрузки, когда входные данные 37 XML, содержащие иерархические данные, загружаются в память, например, ОЗУ 25 для использования прикладной программой, например, прикладной программой электронной таблицы. Входные данные 37 XML могут включать в себя схему, внедренную в данные, которая задает отношения «родитель-потомок» между элементами XML и атрибутами, появляющимися в данных. В необязательном порядке входные данные 37 XML могут включать в себя указатель на входные данные 38 схемы XML, которые могут храниться в персональной компьютерной системе 20 или на удаленном компьютере (например, удаленном компьютере 49), доступном персональной компьютерной системе 20 через сетевой интерфейс 53. Следует оценить тот факт, что схема во входных данных 38 схемы XML «отображается» в плоскую структуру 39 данных в прикладной программе так, чтобы строки и столбцы электронной таблицы соответствовали заданным иерархическим соотношениям. Схема может отображаться пользователем (т.е. путем перетаскивания и сброса (drag-and-drop) элементов схемы в электронную таблицу) или альтернативно, отображение может осуществляться автоматически прикладной программой электронной таблицы. «Отображенная» схема связывается с данными во входных данных 37 XML при загрузке в прикладную программу.
Затем алгоритм переходит к операции 215 применения, когда программный модуль 36 уплощения XML определяет, как вставлять загруженные данные XML на основании конструкций в схеме, отображенной в электронную таблицу. Для этого программный модуль 36 уплощения XML применяет к данным ряд «правил размещения». Правила размещения основаны на известных конструкциях схемы и определяют, как нужно вставлять или «уплощать» данные. Очевидно также, что программный модуль 36 уплощения XML может уплощать все входные данные 37 XML или фрагмент данных. Программный модуль 36 уплощения XML уплощает фрагменты от начала фрагмента с учетом ближайшего общего родителя всех узлов фрагмента. Применив правила размещения, программный модуль 36 уплощения XML создает плоскую структуру данных. Этапы, составляющие операцию 215 применения, показаны на фиг.3 и будут описаны более подробно ниже. Наконец, алгоритм переходит к операции 220 перевода, когда программный модуль 36 уплощения XML переводит «уплощенные» данные XML в электронную таблицу. Иллюстративные мгновенные снимки экрана, на которых показано, как, на основании правил размещения, данные переводятся в электронную таблицу, показаны на фиг.4-11 и будут более подробно описаны ниже.
На фиг.3 показан алгоритм выполнения операции 215 применения, показанной на фиг.2, в которой программный модуль 36 уплощения XML применяет к загруженным данным XML правила размещения на основании схемы, отображенной в электронную таблицу. Алгоритм начинается с операции 310 идентификации, когда программный модуль 36 уплощения XML идентифицирует свойства и типы элементов, заданные в схеме. Ниже приведены свойства и типы элементов и связанные с ними правила размещения.
Свойства
Все: Это свойство задает, что элементы могут появляться в любом порядке, но только один раз. Если схема содержит свойство «все», то программный модуль 36 уплощения XML отображает элементы согласно этому свойству в одной и той же строке электронной таблицы.
Последовательность: Это свойство задает, что элементы должны появляться в определенном порядке и могут появляться некоторое число раз, включая нуль. Сама последовательность также может появляться произвольное число раз. Если схема содержит свойство «последовательность», то программный модуль 36 уплощения XML отображает элементы согласно этому свойству в одной и той же строке электронной таблицы, если схема не указывает, что элемент появляется более одного раза.
Выбор: Это свойство задает, что элементы не связаны друг с другом никаким отношением и подлежат выбору (только одно появление при выборе). Выбранный элемент или группа может появляться некоторое число раз, включая нуль. Если схема содержит свойство «выбор», то программный модуль 36 уплощения XML отображает элементы этого компоновщика в разных строках электронной таблицы.
Типы элементов
Атрибут: Атрибуты эквивалентны дочерним элементам в схеме. Если схема содержит атрибут, то программный модуль 36 уплощения XML отображает атрибуты в электронной таблице в одной и той же строке с его родительским элементом. Программный модуль 36 уплощения XML также «заполняет» атрибуты с другими дочерними элементами, заданными в схеме.
Предок: Элементы, имеющие потомков (таких как дочерние элементы), являются элементами-предками. Программный модуль 36 уплощения XML «заполняет» элементы-предки с их потомками.
Братья: Два или более элементов, имеющих общего родителя, являются элементами-братьями. Программный модуль 36 уплощения XML «заполняет» элементы-братья с другими элементами-братьями, если один или более элементов-братьев не появляется более одного раза. Используемый в этом описании и прилагаемой формуле изобретения термин «заполнять» означает действие повторения значения данных в таблице. Таким образом, хотя данные могут появляться в данных XML только один раз, в таблице они будут отображаться более одного раза. Следует понимать, что свойства «все», «последовательность» и «выбор» также известны как компоновщики. Специалистам в данной области техники известно, что компоновщики представляют собой конструкции схемы XML, идентифицирующие требования или ожидания появления непосредственных потомков элемента. Члены одного и того же компоновщика рассматриваются как братья. На этапе 315 программный модуль 36 уплощения XML просматривает схему, чтобы определить, содержит ли она компоновщик «все». Если схема содержит компоновщик «все», то на этапе 320 программный модуль 36 уплощения XML вставляет элементы этого компоновщика в одну и ту же строку в полученной плоской структуре данных. Если схема не содержит компоновщик «все», то на этапе 325 программный модуль 36 уплощения XML определяет, содержит ли схема компоновщик «последовательность».
Ниже приведен пример входных данных 38 схемы XML, задающих элементы в компоновщике «все» и согласующихся со входными данными 37 XML.
Данные схемы
<xsd:element name=”root”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”A” maxOccurs=”unbounded”>
<xsd:complexType>
<xsd:all>
<xsd:element name=”B” type=”xsd:string”/>
<xsd:element name=”C” type=”xsd:string”/>
<xsd:element name=”D” type=”xsd:string”/>
<xsd:element name=”E” type=”xsd:string”/>
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Данные <root>
<A>
<B>b1</B>
<C>c1</C>
<D>d1</D>
<E>e1</E>
</A>
<A>
<C>c2</C>
<B>b2</B>
<E>e2</E>
<D>d2</D>
</A>
</root>
Входные данные 38 схемы XML, представленные в вышеприведенном примере, задают базовый элемент «А» структуры данных XML. Элементы «В», «С», «D» и «Е» - это элементы, которые должны содержаться в элементе «А» и заданы в компоновщике «все». Значения “b1”, “c1”, “d1” и “e1” входных данных 37 XML для схемы представляют данные, содержащиеся в элементах «В», «С», «D» и «Е». Теги (неотображаемые элементы разметки) </B>, </C>, </D> и </E>, следующие за вышеупомянутыми данными, задают конец каждого элемента. Аналогично, входные данные 37 XML также указывают элементы «С», «В», «Е» и «D», содержащие данные “c2”, “b2”, “e2” и “d2”, соответственно, также содержащиеся в элементе «А».
Полученная в результате иллюстративная плоская структура данных 39 для данных во входных данных 37 XML в вышеприведенном примере показана на фиг.4. Как показано на линии 405 по фиг.4, заголовки столбцов представляют элементы «В», «С», «D» и «Е», заданные в компоновщике «все» во входных данных 38 схемы XML. Линия 410 показывает, что данные “b1”, “c1”, “d1” и “e1” отображаются в одной и той же строке. Аналогично, линия 415 показывает, что данные “b2”, “c2”, “d2” и “e2” также отображаются в одной и той же строке. Согласно вышеприведенному краткому описанию, компоновщик «все» указывает, что элементы можно отображать в любом порядке. Таким образом, очевидно, что порядок отображения элементов может отличаться от показанного на фиг.4.
Согласно фиг.3 на этапе 325 программный модуль 36 уплощения XML просматривает схему, чтобы определить, содержит ли она компоновщик «последовательность». Если схема содержит компоновщик «последовательность», то на этапе 330 программный модуль 36 уплощения XML вставляет элементы этого компоновщика в одну и ту же строку, как показано выше на фиг.4 для компоновщика «все», если схема не указывает, что элемент появляется более одного раза. Если схема не содержит компоновщик «последовательность», то на этапе 335 программный модуль 36 уплощения XML определяет, содержит ли схема компоновщик «выбор».
Ниже приведен пример входных данных 38 схемы XML, задающих элементы в компоновщике «последовательность» и согласующихся со входными данными 37 XML.
Данные схемы
<xsd:element name=”root”>
<xsd:complexType> <xsd:sequence>
<xsd:element name=”A” maxOccurs=”unbounded”>
<xsd:complexType>
<xsd:sequence maxOccurs=”unbounded”>
<xsd:element name=”B” type=”xsd:string”/>
<xsd:element name=”C” type=”xsd:string”/>
<xsd:element name=”D” type=”xsd:string”/>
<xsd:element name=”E” type=”xsd:string”/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:sequence>
</xsd:complexType>
</xsd:element>
Данные
<root>
<A>
<B>b1</B>
<C>c1</C>
<D>d1</D>
<E>e1</E>
<B>b2</B>
<C>c2</C>
<D>d2</D>
<E>e2</E>
</A>
</root>
Входные данные 38 схемы XML, представленные в вышеприведенном примере, задают элементы «В», «С», «D» и «Е» компоновщика «последовательность» как неограниченные элементы (т.е. maxOccurs=”unbounded”), указывая, что данные, содержащиеся в этих элементах, должны появляться в заданном порядке и что каждый элемент может появляться более одного раза.
Полученная в результате иллюстративная плоская структура данных 39 для данных во входных данных 37 XML в вышеприведенном примере показана на фиг.5. Линия 505 показывает, что заголовки столбцов представляют элементы «В», «С», «D» и «Е», заданные в компоновщике «последовательность» во входных данных 38 схемы XML. Линии 510-525 показывают, что данные “b1”, “c1”, “d1” и “e1” вставлены в разные строки. Аналогично, линии 530-545 показывают, что данные “b2”, “c2”, “d2” и “e2” также вставлены в разные строки. В неограниченной последовательности дочерние элементы последовательности могут появляться любое количество раз. Таким образом, между братьями нет явного отношения. Например, во входном файле данных XML, согласно примеру, показанному на фиг.5, невозможно определить, что наборы данных “b1”, “c1”, “d1” и “e1” и “b2”, “c2”, “d2” и “e2” не связаны друг с другом, поскольку они имеют общего родителя.
Согласно фиг.3, на этапе 335 программный модуль 36 уплощения XML просматривает схему, чтобы определить, содержит ли она компоновщик «выбор». Если схема содержит компоновщик «выбор», то на этапе 340 программный модуль 36 уплощения XML вставляет элементы в этом компоновщике в разные строки. Если схема не содержит компоновщик «выбор», то на этапе 355 программный модуль 36 уплощения XML определяет, содержит ли схема свойство «атрибут».
Ниже приведен пример входных данных 38 схемы XML, задающих элементы в компоновщике «выбор» и согласующихся со входными данными 37 XML.
Данные схемы
<xsd:element name=”root”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”A” maxOccurs=”unbounded”>
<xsd:complexType>
<xsd:choice>
<xsd:element name=”B” type=”xsd:string”/>
<xsd:element name=”C” type=”xsd:string”/>
<xsd:element name=”D” type=”xsd:string”/>
<xsd:element name=”E” type=”xsd:string”/>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Данные
<root>
<A>
<E>e1</E>
</A><A>
<C>c1</C>
</A>
<A>
<D>d1</D>
</A>
<A>
<B>b1</B>
</A>
</root>
Входные данные 38 схемы XML, представленные в вышеприведенном примере, задают элементы «В», «С», «D» и «Е» как элементы «выбор» в компоновщике «выбор» <xsd:choice>, указывая, что данные, содержащиеся в этих элементах, не связаны друг с другом никакими отношениями. Поэтому программный модуль 36 уплощения XML вставляет каждый элемент в отдельную строку электронной таблицы.
Полученная в результате иллюстративная плоская структура данных 39 для данных во входных данных 37 XML в вышеприведенном примере показана на фиг.6. Линия 605 по фиг.6 показывает, что заголовки столбцов представляют элементы «В», «С», «D» и «Е», заданные в компоновщике «выбор» во входных данных 38 схемы XML. Линии 610-625 показывают, что данные “e1”, “c2”, “d1” и “b1” вставлены в разные строки.
Следует понимать, что входные данные 38 схемы XML могут включать в себя компоновщики, вложенные в другие компоновщики. Например, данные схемы XML могут задавать элементы в компоновщике «выбор», которые вложены в элементы, заданные в компоновщике «последовательность». При уплощении вложенных элементов, программный модуль 36 уплощения XML вставляет данные для каждого элемента согласно правилам размещения для каждого компоновщика. Ниже приведен пример входных данных 38 схемы XML, задающих элементы компоновщика «выбор», вложенных в элементы компоновщика «последовательность» и согласующихся со входными данными 37 XML.
<xsd:element name=”root”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”A” maxOccurs=”unbounded”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”B” type=”xsd:string”/>
<xsd:choice>
<xsd:element name=”C” type=”xsd:string”/>
<xsd:element name=”D” type=”xsd:string”/>
</xsd:choice>
<xsd:element name=”E” type=”xsd:string”/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Данные<root>
<A>
<B>b1</B>
<C>c1</C>
<E>e1</E>
</A>
<A>
<B>b2</B>
<D>d1</D>
<E>e2</E>
</A>
</root>
Входные данные 38 схемы XML, представленные в вышеприведенном примере, задают элементы «В» и «Е» как элементы «последовательность», указывая, что данные, содержащиеся в этих элементах, должны появляться в заданном порядке. Входные данные 38 схемы XML также задают элементы «С» и «D» как элементы «выбор», указывая, что данные, содержащиеся в этих элементах, не связаны друг с другом никакими отношениями. Таким образом, согласно данным 38 схемы XML, элементы «В» и «Е» могут быть в последовательности с элементом «С» или элементом «D». Данные 37 XML указывают, что элементы «В», «С» и «Е» содержат данные “b1”, “c1” и “e1” соответственно. Данные 37 XML также указывают, что элементы «В», «D» и «Е» содержат данные “b2”, “d1” и “e2”. Согласно рассмотренному выше, программный модуль 36 уплощения XML вставляет данные в элементах «последовательность» в одну и ту же строку электронной таблицы (если не выполняется maxOccurs>1) и вставляет данные в элементах «выбор» в разные строки электронной таблицы.
Полученная в результате иллюстративная плоская структура данных 39 для данных во входных данных 37 XML в вышеприведенном примере показана на фиг.7. Линия 705 по фиг.7 показывает, что заголовки столбцов представляют элементы «В», «С», «D» и «Е», заданные в компоновщиках «последовательность» и «выбор» во входных данных 38 схемы XML. Линия 710 показывает, что данные «последовательность» “b1” и “e1” вставлены в ту же строку, что и данные «выбор» “c1”, а линия 715 показывает, что данные «последовательность» “b2” и “e2” также вставлены в ту же строку, что и данные «выбор» “d1”. Таким образом, согласно фиг.7, выполняются правила размещения для компоновщиков «последовательность» и «выбор». Данные «выбор» “c1” и “d1” появляются в разных строках, а данные «последовательность» “b1”, “e1”, “b2” и “e2” находятся в последовательности с данными «выбор».
Согласно фиг.3, на этапе 345 программный модуль 36 уплощения XML просматривает схему, чтобы определить, задает ли она атрибуты для входных данных 37 XML. Если схема задает атрибуты, то на этапе 350 программный модуль 36 уплощения XML вставляет атрибуты в одну и ту же строку с содержимым их родительских элементов. Кроме того, на этапе 360 программный модуль 36 уплощения XML «заполняет» атрибуты с потомками каждого родительского элемента (например, дочерними элементами), заданными в схеме. Если схема не задает атрибутов, то на этапе 355 программный модуль 36 уплощения XML определяет, задает ли схема элементы-предки.
Ниже приведен пример входных данных 38 схемы XML, задающих атрибуты и согласующихся со входными данными 37 XML.
Данные схемы
<xsd:element name=”root”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”A” maxOccurs=”unbounded”>
<xsd:complexType>
<xsd:simpleContent>
<xsd:restriction base=”xsd:string”>
<xsd:attribute name=”ATTA” type=”xsd:integer”/>
</xsd:restriction>
<xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Данные
<root>
<A ATTA=”1”>A1</A>
<A ATTA=”2”>A2</A>
<A ATTA=”3”>A3</A>
</root>
Входные данные 38 схемы XML, представленные в вышеприведенном примере, задают элемент «А» и атрибут «АТТА», относительно которого дополнительно указано, что он имеет целочисленное значение (заданное во входных данных XML как «1», «2» или «3»).
Полученная в результате иллюстративная плоская структура данных 39 для данных во входных данных 37 XML в вышеприведенном примере показана на фиг.8. Линия 805 по фиг.8 показывает, что заголовки столбцов представляют атрибут «АТТА» и родительский элемент «А», заданные во входных данных 38 схемы XML. Линии 810-820 показывают, что каждое из целочисленных значений «1», «2» и «3» атрибута вставлено в ту же строку, что и данные «А1», «А2» и «А3» родительского элемента «А».
Ниже приведен другой пример входных данных 38 схемы XML, задающих атрибуты и согласующихся со входными данными 37 XML.
Данные схемы
<xsd:element name=”root”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”A” maxOccurs=”unbounded”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name”B”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name”C” type=”xsd:string”/>
<xsd:element name”D” type=”xsd:string”/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name=”ATTA” type=”xsd:integer”/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Данные
<root>
<A ATTA=”213”>
<B>
<C>C1</C>
<D>D1</D>
</B>
<B>
<C>C2</C>
<D>D2</D>
</B>
</A>
</root>
Входные данные 38 схемы XML, представленные в вышеприведенном примере, задают атрибут «АТТА» (имеющий целочисленное значение «213») совместно с родительским элементом «А», а также дочерними элементами «С» и «D» в элементе «В».
Полученная в результате иллюстративная плоская структура данных 39 для данных во входных данных 37 XML в вышеприведенном примере показана на фиг.9. Линия 905 по фиг.9 показывает, что заголовки столбцов представляют атрибут «АТТА» и повторяющиеся дочерние элементы «С» и «D». Данные для повторяющихся дочерних элементов «С» и «D» вставлены на линиях 910 и 915. Значение «213» данных для атрибута «АТТА» также вставлено совместно с данными для дочерних элементов «С» и «D» на линиях 910 и 915. Таким образом, данные для атрибута «АТТА», которые не повторяются, «заполняются» с помощью данных для повторяющихся дочерних элементов «С» и «D».
Согласно фиг.3, программный модуль 36 уплощения XML на этапе 355 просматривает схему, чтобы определить, задает ли она элементы-предки для входных данных 37 XML. Если схема задает элементы-предки, то на этапе 365 программный модуль 36 уплощения XML «заполняет» элементы-предки совместно с их потомками. Если схема не задает элементы-предки, то на этапе 370 программный модуль 36 уплощения XML определяет, задает ли схема элементы-братья.
Ниже приведен пример входных данных 38 схемы XML, задающих элементы-предки и согласующихся со входными данными 37 XML.
Данные схемы
<xsd:element name=”root”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”A” maxOccurs=”unbounded”>
<xsd:sequence>
<xsd:element name”B” type=”xsd:string” max/>
</xsd:sequence>
</xsd:element>
<xsd:element name”C” type=”xsd:string”/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Данные
<root>
<A>
<B>B1</B>
</A>
<A>
<B>B2</B>
</A>
<C>C1</C>
</root>
Входные данные 38 схемы XML, представленные в вышеприведенном примере, указывают, что элемент «С» является предком элемента «В». Во входных данных 37 XML, элемент «В» содержит данные «В1» и «В2», а элемент «С» содержит содержимое «С1».
Полученная в результате иллюстративная плоская структура данных 39 для данных во входных данных 37 XML в вышеприведенном примере показана на фиг.10. Линия 1005 по фиг.10 показывает, что заголовки столбцов представляют элементы «В» и «С». Данные для повторяющегося элемента «В» вставлены на линиях 1010 и 1015. Данные для элемента-предка «С» «заполняются» совместно с данными для элемента «В». Согласно фиг.3, программный модуль 36 уплощения XML на этапе 370 просматривает схему, чтобы определить, задает ли она элементы-братья для входных данных 37 XML. Если схема задает элементы-братья, то программный модуль 36 уплощения XML «заполняет» элементы-братья с другими элементами-братьями, если один или несколько элементов-братьев не появляются более одного раза. Если схема не задает элементы-братья, то алгоритм переходит к этапу 380, на котором программный модуль 36 уплощения XML обращается к схеме для определения того, имеются ли в схеме еще свойства. Если в схеме еще определены свойства, то алгоритм переходит к этапу 315, на котором программный модуль 36 уплощения XML идентифицирует следующее свойство. Если в схеме нет других свойств, то алгоритм возвращается к операции 220 перевода по фиг.2.
Ниже приведен пример входных данных 38 схемы XML, задающих элементы-братья и согласующихся со входными данными 37 XML.
Данные схемы
<xsd:element name=”root”>
<xsd:complexType>
<xsd:sequence>
<xsd:element name=”A” maxOccurs=”unbounded”>
<xsd:element name=”B” type=”xsd:string”/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Данные
<root><A>A1</A>
<A>A2</A>
<B>B1</B>
<root>
Входные данные 38 схемы XML, представленные в вышеприведенном примере, указывают, что элементы «А» и «В» являются братьями. Во входных данных 37 XML, элемент «А» содержит данные «А1» и «А2», а элемент «В» содержит содержимое «В1».
Полученная в результате иллюстративная плоская структура данных 39 для данных во входных данных 37 XML в вышеприведенном примере показана на фиг.11. Линия 1105 по фиг.11 показывает, что заголовки столбцов представляют элементы «А» и «В». Данные для повторяющегося элемента «А» вставлены на линиях 1110 и 1115. Данные для братского элемента «В» «заполняются» совместно с данными для элемента «А».
Следует понимать, что когда два или более элементов-братьев, элементов-предков или братских элементов-предков заданы в схеме как появляющиеся более одного раза, образуется декартово произведение. Декартовы произведения получают из элементов, объединенных в несколько комбинаций без какой-либо определенной смысловой нагрузки. Например, если бы элементы-братья «А» и «В» были заданы в схеме как неограниченные (т.е. появляющиеся более одного раза), то любое количество элемента «А» пришлось бы вставлять с любым количеством элемента «В». Декартовы произведения часто нежелательны, поскольку они обычно приводят к очень большим наборам данных. Например, для двух столбцов данных с m и n строками каждый, декартово произведение дает результат, в котором m строк умножается на n строк данных. Это может привести к очень большим наборам данных при увеличении количества строк и количества столбцов. Кроме того, в декартовых произведениях трудно определить соотношения данных, что приводит к большим наборам данных, особенно поскольку наборы данных могут быть первоначально вовсе никак не связаны. Поэтому программный модуль 36 уплощения XML не «заполняет» эти элементы.
Из вышеизложенного явствует, что настоящее изобретение обеспечивает способ и систему для преобразования иерархической структуры данных в плоскую структуру данных на основании схемы. Хотя изобретение было конкретно показано и описано со ссылкой на иллюстративные варианты его осуществления, специалистам в данной области техники очевидно, что оно допускает различные изменения, касающиеся формы и деталей, не выходящие за рамки сущности и объема изобретения.