Расширяемый формат компьютерных файлов

Иллюстрации

Показать все

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

Реферат

Область техники

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

Предшествующий уровень техники

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

Каждая прикладная программа, которая сохраняет файлы в компьютерной системе, должна определять формат, в котором сохраняются данные. Существует много способов сохранения данных, начиная от сохранения «памятийных образов» данных до сохранения данных в виде, согласованном с промышленным стандартом. Кроме того, компьютерные прикладные программы непрерывно обновляются и изменяются, чтобы можно было пользоваться новейшими особенностями и достижениями в технологии. Конечные пользователи обычно получают доступ к обновлениям и изменениям благодаря выпуску обновленных версий прикладной программы. Формат файла, используемый обновленной версией прикладной программы, должен быть совместим с предыдущими и будущими версиями. Однако обновленная версия обычно использует формат файла, отличный от используемого предыдущими версиями, поскольку новые особенности в обновленной версии требуют записи в файл данных новых данных. Между двумя разными версиями прикладной программы могут возникать конфликты, поскольку в результате изменения формата файла предыдущим версиям может не удаваться читать файлы обновленной версии.

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

Пример объекта 100 показан на фиг.1. Объект 100 может содержать границу 102 и текст 104. Объект 100 может иметь шесть свойств, характеризующих границу 102 и текст 104. Граница 102 может иметь свойства «стиль границы» и «размер границы». Текст 104 может иметь свойства «шрифт», «размер символов текста», «выравнивание» и «стиль текста». Значения по умолчанию для границы 102 и текста 104 могут указывать, что «стиль границы» = «сплошная», «размер границы» = 4 пункта, «шрифт» текста = Times New Roman, «размер символов текста» = 20 пунктов, «выравнивание» текста = «по левому краю» и «стиль текста» = «не курсив».

В прикладной программе значения по умолчанию для объектов и свойств могут быть установлены при первоначальном программировании. В ходе работы программы значения по умолчанию могут изменяться и сохраняться в файле данных. Например, в программе рисования, которая может отображать объекты, например прямоугольники и треугольники, пользователь может изменять свойства объекта. Согласно фиг.1 свойства объекта 100 могут изменяться таким образом, что сплошная граница сменяется пунктирной границей, а стиль текста меняется на курсив. Более поздние версии программы обычно могут считывать значения по умолчанию и изменения для каждого объекта. Однако при создании более поздних версий программы формат файла обычно отличается от формата файла предыдущей версии. Соответственно предыдущая версия не может читать файлы более поздней версии. В примере, приведенном в предыдущем абзаце, более поздняя версия может включать в себя новую особенность, например тень объекта 100. Добавленная особенность требует записи новых данных в файлы программы, а следовательно, изменения их формата. Предыдущая версия не может читать файлы более поздней версии, содержащие новые данные, поскольку форматы файла отличаются.

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

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

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

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

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

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

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

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

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

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

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

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

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

Фиг.1 - блок-схема объекта, используемого прикладной программой.

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

Фиг.3 - блок-схема характеристик традиционного ССО.

Фиг.4 - блок-схема характеристик массива ССО согласно иллюстративному варианту осуществления настоящего изобретения.

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

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

Фиг.7 - блок-схема алгоритма способа загрузки и сохранения исходного файла данных согласно иллюстративному варианту осуществления настоящего изобретения, когда в действующую версию добавлено свойство объекта, не включенное в предыдущую версию.

Фиг.8 - блок-схема алгоритма способа загрузки и сохранения исходного файла данных согласно иллюстративному варианту осуществления настоящего изобретения, когда из действующей версии удалено свойство объекта, которое использовалось в предыдущей версии.

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

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

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

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

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

На фиг.2 показан традиционный персональный компьютер 10, пригодный для обеспечения выполнения предпочтительного варианта осуществления настоящего изобретения. Согласно фиг.2 персональный компьютер 10 работает в сетевой среде, осуществляющей логические подключения к удаленному серверу 11. Логические соединения между персональным компьютером 10 и удаленным сервером 11 представлены в виде локальной сети 12 и глобальной сети 13. Специалистам в данной области известно, что в этой конфигурации клиент-сервер удаленный сервер 11 может функционировать как файл-сервер или компьютер-сервер.

Персональный компьютер 10 содержит процессор 14, например микропроцессоры PENTIUM производства корпорации Intel, Санта-Клара, Калифорния. Персональный компьютер 10 также содержит системную память 15, включающую в себя постоянную память (ПЗУ) 16 и оперативную память (ОЗУ) 17, подключенные к процессору 14 посредством системной шины 18. Предпочтительный компьютер 10 использует BIOS 19, хранящийся в ПЗУ 16. Специалистам в данной области известно, что BIOS 19 - это набор основных процедур, которые помогают переносить информацию между элементами персонального компьютера 10. Специалистам в данной области также известно, что настоящее изобретение можно реализовать на компьютерах, имеющих другие архитектуры, например, на компьютерах, не использующих BIOS, и на использующих другие микропроцессоры.

В персональном компьютере 10 локальный жесткий диск 20 подключен к системной шине 18 посредством интерфейса 21 жесткого диска. Привод 22 флоппи-диска, который используется для чтения флоппи-диска 23 или записи на него, подключен к системной шине 18 посредством интерфейса 24 привода флоппи-диска. Привод 25 CD-ROM или DVD, который используется для чтения диска 26 CD-ROM или DVD, подключен к системной шине 18 посредством интерфейса 27 CD-ROM или DVD. Пользователь вводит команды и информацию в персональный компьютер 10 с использованием устройств ввода, например, клавиатуры 28 и/или указательного устройства, например мыши 29, которое подключено к системной шине 18 посредством интерфейса 30 последовательного порта. Указательные устройства других типов (не показаны на фиг.2) включают в себя сенсорные панели, шаровые манипуляторы, перья, устройства определения позиции по положению головы оператора, перчатки для сбора цифровых данных и другие устройства, пригодные для позиционирования курсора на мониторе 31 компьютера. Монитор 31 или устройство отображения другого рода подключен к системной шине 18 посредством видеоадаптера 32.

Удаленный сервер 11 в этой сетевой среде подключен к удаленному запоминающему устройству 33. Удаленное запоминающее устройство 33 обычно представляет собой запоминающее устройство большой емкости, например, жесткий диск, привод CD-ROM или DVD, магнитооптический дисковод и т.п. Специалистам в данной области известно, что программные модули, например, модули 37C и 37D прикладной программы предоставляются удаленному серверу 11 посредством компьютерно-считываемых носителей. Персональный компьютер 10 подключен к удаленному серверу 11 посредством сетевого интерфейса 34, который используется для связи по локальной сети 12.

В альтернативном варианте осуществления персональный компьютер 10 также подключен к удаленному серверу 11 посредством модема 35, который используется для связи по глобальной сети 13, например Интернет. Модем 35 подключен к системной шине 18 посредством интерфейса 30 последовательного порта. Модем 35 также может подключаться к телефонной сети общего пользования (ТСОП) или сети коллективного телевизионного приема (КТП). Хотя на фиг.2 модем показан внешним по отношению к персональному компьютеру 10, специалисту в данной области известно, что модем 35 может быть внутренним по отношению к персональному компьютеру 10 и, таким образом, осуществлять связь непосредственно через системную шину 18. Важно отметить, что подключение к удаленному серверу 11 одновременно через локальную сеть 12 и глобальную сеть 13 не требуется, но всего лишь иллюстрирует альтернативные способы обеспечения линии связи между персональным компьютером 10 и удаленным сервером 11.

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

Специалистам в данной области известно, что программные модули, например, операционная система 36, программный модуль 37А приложения, программный модуль 37В обозревателя, другие программные модули 37N и данные предоставляются персональному компьютеру 10 посредством компьютерно-считываемых носителей. В предпочтительном компьютере 10 компьютерно-считываемые носители включают в себя локальные или удаленные запоминающие устройства, которые могут включать в себя локальный жесткий диск 20, флоппи-диск 23, CD-ROM или DVD 26, ОЗУ 17, ПЗУ 16 и удаленное запоминающее устройство 33. В предпочтительном персональном компьютере 10 локальный жесткий диск 20 используется для сохранения данных и программ.

Программные модули 37N могут содержать прикладные программы, которые имеют файлы расширяемого формата файла согласно иллюстративному варианту настоящего изобретения. Первая прикладная программа может управлять объектом, который, в свою очередь, может содержать список свойств объекта (ССО) расширяемого формата файла. ССО может храниться в непрерывном блоке системной памяти 16. Вторая прикладная программа может обращаться к ССО объекта и может выполнять различные функции с использованием ССО, например, описанные ниже.

ССО представляют собой структуру данных для сохранения данных в файле данных. Более подробные описания можно найти в патентах США №№ 5933842 и 5946696. Раскрытие этих патентов включены сюда посредством ссылки.

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

На фиг.3 описаны характеристики традиционного ССО 300. (Дополнительную информацию относительно СОО см. патенты США №№ 5933842 и 5946696.)

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

На фиг.1 показан пример объекта 100, рассмотренный в разделе «Предпосылки изобретения». Объект 100 может содержать границу 102 и текст 104. Объект 100 может иметь шесть свойств, характеризующих границу 102 и текст 104. Граница 102 может иметь свойства «стиль границы» и «размер границы». Текст 104 может иметь свойства «шрифт», «размер символов текста», «выравнивание» и «стиль текста». Значения по умолчанию для границы 102 и текста 104 могут указывать, что «стиль границы» = «сплошная», «размер границы» = 4 пункта, «шрифт текста» = Times New Roman, «размер символов текста» = 20 пунктов, «выравнивание текста» = «по левому краю» и «стиль текста» = «не курсив».

Поскольку ССО 300 использует стандартный формат, его можно использовать для внутреннего хранения свойств объекта. Например, ССО 300 может включать в себя элемент 302 «идентификатор свойства объекта» (opyid), элемент 304 «тип свойства объекта» и объект 306 «значение свойства объекта». Элемент 302 opyid может содержать числовой идентификатор, связанный с конкретным свойством. Система может поддерживать отображение всех свойств в соответствующие opyid, и это отображение может изменяться от ССО к ССО. Другими словами, каждый ССО может задавать, какое свойство выражают значения opyid, и другие ССО могут использовать одни и те же значения opyid для разных свойств. Элемент 304 «тип свойства объекта» представляет собой тип данных, например, короткое целое (2 байта), длинное целое (4 байта), строка уникода и т.д. Элемент 306 «значение свойства объекта» согласуется с соответствующим элементом 304 «тип свойства объекта». Например, согласно фиг.3, opyid «1» обозначает элемент 304 «тип свойства объекта» - короткое целое (2 байта), который, как известно системе, соответствует «цвету», и элемент 306 «значение свойства объекта», равное 0Ч00FF0000, которое в системе КЗС (красный, зеленый, синий) кодирует «красный». При ссылке на конкретное свойство используется opyid. Например, если в ССО 300 нужно свойство границы, на него ссылаются посредством opyid «2». ССО может также содержать другой ССО в качестве свойства, что позволяет создавать более сложные структуры данных.

В традиционном 16-разрядном ССО элемент 302 opyid обычно занимает одиннадцать битов. В такой конфигурации ССО 300 ограничено 2048 элементами данных (предметами), поскольку ограничено одиннадцатью разрядами. В издательской системе количество объектов и свойств может значительно превосходить 2048 элементов данных. Документ издательской системы может иметь много страниц, каждая из которых может иметь много объектов. С каждым объектом может быть связано много свойств. Соответственно в ряде случаев желательно обеспечить максимальную емкость ССО. Для этого настоящее изобретение обеспечивает усовершенствованный тип ССО, «массив ССО», имеющий практически неограниченную емкость. В массивах ССО могут храниться большие объемы данных, например, все объекты документа. Для хранения меньших количеств свойств можно по-прежнему использовать ССО.

Структура данных 400, отвечающая иллюстративному варианту осуществления настоящего изобретения, описана со ссылкой на фиг.4. Структура данных 400 может включать в себя корневой ССО 402. Корневой ССО 402 может включать в себя свойство 402а «максимум», свойство 402b «инвариант» и свойство 402с «массив ССО». Хотя это и не является необходимым, свойство 402а «максимум» может указывать размер свойства 402с «массив ССО» и может обеспечивать удобство выделения надлежащей памяти при считывании структуры данных 400. Свойство 402b «инвариант» может задавать особенность, где индексы массива для элементов данных в свойстве 402с «массив ССО» остаются постоянными. Другими словами, индекс массива для элемента данных в свойстве 402с «массив ССО» не будет меняться на протяжении времени жизни предмета. Соответственно новые элементы данных можно добавлять только по индексу, который в настоящее время не используется, и удаление элемента данных приводит к очистке индексной ячейки.

Свойство 402с «массив ССО» может ссылаться на массив 404 ССО. Массив ССО может храниться в свойстве 402с «массив ССО» или отдельно. Массив 404 ССО может содержать свойства, другие ССО или другие массивы ССО. Согласно фиг.4 массив 404 ССО может включать в себя список свойств подобъекта (subopl) 404a-404e, причем каждый subopl 404a-404e может представлять собой свойство, ССО или другой массив ССО. Каждый subopl 404a-404e может ссылаться на элемент 406 массива. Каждый элемент 406 массива может представлять собой любое свойство, ССО или другой массив ССО. В этом примере элементы 406 массива представляют собой ССО, которые содержат идентификатор ID и строку переменной длины.

Хотя на фиг.4 показан только один массив 404 ССО со связанными с ним элементами 406 массива ССО, настоящее изобретение не ограничивается такой структурой. Например, структура данных 400 может включать в себя совокупность ССО наподобие массива 404 ССО, с каждым из которых связаны элементы 406 массива ССО. В этом случае индекс 402с может ссылаться на каждый массив 404 ССО.

Каждый subopl 404а-404е ссылается на свойство, объект или другой ССО по аналогии с opyid 302 (фиг.3) традиционного ССО. Однако в структуре данных 400 элементы данных в массиве 404 ССО не являются заданными конкретными opyid. Вместо этого opyid для каждого subopl 404a-404e в массиве 404 ССО может быть задан равным «-1». Тогда позицию каждого subopl 404a-404e в массиве 404 ССО можно использовать в качестве opyid. Позиции каждого subopl 404a-404e представлены на фиг.4 соответствующими указателями 405a-405e индексной позиции. Например, если нужен конкретный subopl, например, имеющий позицию «2» в массиве 404 ССО, то обеспечивается subopl 404c, соответствующий элементу данных по указателю 405с индексной позиции. Subopl 404c располагается в индексной позиции 2 в массиве 404 ССО. Соответственно структура данных 400 ссылается на конкретные ССО на основании их соответствующей индексной позиции в массиве 404 ССО. Индексная позиция конкретного subopl является его opyid. Структура данных 400 устраняет необходимость в сохранении конкретного opyid для каждого элемента, тем самым преодолевая недостатки традиционного ССО. В обычной 32-разрядной системе структура данных 400 может хранить более четырех миллиардов элементов (экземпляров) данных, поскольку количество этих элементов данных уже не ограничивается диапазоном opyid. (Указатели 405а-405е позиций показаны в иллюстративных целях и обычно не предусмотрены в массиве 404 ССО.)

На фиг.4 также показано, как можно сохранять пустые ячейки в массиве 404 ССО для будущей ссылки. Для пустой ячейки 404b в индексной позиции 405b свойство-заполнитель «oplempty» («пустой ССО») может указывать, что соответствующий элемент данных в индексной позиции 405b пуст. Oplempty может указывать, что один элемент массива пуст и должен быть пропущен. Для множественных соседних пустых элементов массива можно использовать свойство-заполнитель "oplskip=n". Oplskip=n может указывать, что следующие (n) ячеек пусты. Например согласно фиг.4 предмет 404d, соответствующий индексной позиции 405d, т.е. индексным позициям 3-5 в массиве 404 ССО, заполнен свойством-заполнителем "oplskip=3", указывающим, что следующие 3 элемента данных в массиве 404 ССО пусты и должны быть пропущены.

Файл данных можно характеризовать как совокупность объектов. Каждый объект можно задать посредством ССО. С каждым СОО может быть связан описатель объекта (ОО). ОО может быть индексом к (указателем на) ССО объекта. Соответственно ОО может идентифицировать объект и не изменяется на протяжении жизни объекта. (См. поле 402b «инвариант» на фиг.4.) Для обхода структуры файла достаточно сослаться на ОО для каждого объекта без необходимости использовать информацию, специфическую для каждого объекта. ОО может оставаться неизменным (инвариантным) относительно сохранений файла, что делает ОО полезным при ссылке на объекты в памяти и/или в файле.

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

Для сохранения структуры памяти в ССО или массиве ССО можно задать «словарь ССО», в котором указаны значения по умолчанию и типы для каждого свойства. Количество словарей можно минимизировать, поскольку неиспользуемые свойства не занимают места. Соответственно один иллюстративный вариант осуществления настоящего изобретения предусматривает использование единственного словаря. В таком варианте осуществления все общие объекты могут иметь один и тот же opyid или индексную позицию массива для каждого идентичного элемента данных. Другой иллюстративный вариант осуществления предусматривает следующие словари: (1) словарь структуры файла, который может включать в себя все свойства, относящиеся к структуре файла (т.е. корень дерева ССО); (2) словарь объектов страницы, который может включать в себя свойства всех объектов страницы документа издательской системы; и (3) другие словари структур, которые могут включать в себя словарь для описания объектов, содержащих текст, совместно со связанным с ним текстом или словарь описания цвета для описания цветов, используемых в публикации, и т.д. Когда свойства заданы в словаре, любой объект может ссылаться на них. Соответственно общие свойства, используемые общими объектами, одинаковы, поскольку они происходят из одного и того же словаря.

ССО (и массивы ССО) могут обеспечивать преимущество сохранности или «оборота» (посылки-приема) неизвестных свойств или информации из будущих версий. Конкретная версия может загрузить исходный ССО с диска в память. Все свойства ССО, известные конкретной версии, могут перезаписываться. Остальные свойства (т.е. свойства, неизвестные конкретной версии), созданы будущей версией и могут оставаться в файле нетронутыми. Таким образом, неизвестные свойства могут переноситься обратно в сохраненный файл для использования более поздней версией. Неизвестные свойства можно игнорировать при загрузке и легко оставлять при сохранении.

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

Ниже описан со ссылкой на фиг.5 и 6 способ согласно настоящему изобретению для обеспечения совместимости между действующей версией, предыдущей версией и более поздней версией прикладной программы. Действующая (активная) версия прикладной программы - это прикладная программа, работающая в настоящее время в компьютерной системе 200 (фиг.2). Предыдущая версия прикладной программы - это любая версия прикладной программы, созданная до действующей версии. Более поздняя версия прикладной программы - это любая версия прикладной программы, созданна