Open Packaging Conventions (OPC) — это технология контейнерных файлов, изначально созданная Microsoft для хранения комбинации XML- и не-XML-файлов, которые вместе образуют единую сущность, такую как документ Open XML Paper Specification (OpenXPS). Форматы файлов на основе OPC сочетают в себе преимущества сохранения независимых файловых сущностей, встроенных в документ, нетронутыми, что приводит к гораздо меньшим файлам по сравнению с обычным использованием XML. [ dubious – discussion ]
OPC определен в Части 2 стандартов Office Open XML ISO / IEC 29500:2008 и ECMA -376 . [1] [2]
Спецификация ISO/IEC 29500-2:2008 и второе издание ECMA-376 делают нормативную ссылку на спецификацию формата файла .ZIP версии 6.2.0 (2004) компании PKWARE, Inc. и дополняют ее нормативным набором разъяснений. Примечание: более раннее первое издание ECMA-376 делает информационную ( т. е . ненормативную) ссылку на более новую версию 6.2.1 (2005) компании PKWARE Inc. "Спецификация формата файла .ZIP". [1] Формат ZIP не определен каким-либо международным стандартом, но широко принят сообществом и разработчиками.
Microsoft представила проект в 2006 году в Internet Engineering Task Force для схемы URI "pack" ( pack://
), которая будет использоваться для ссылок URI на пакеты на основе OPC. Срок действия проекта истек в 2009 году, указанный синтаксис несовместим со стандартом Интернета для схем URI (STD 66, RFC 3986). [3] В настоящее время схема указана как историческая . [4]
Стандарт ISO 19165:1-2018 рекомендует использовать открытые соглашения по упаковке для внедрения геопространственного пакета, определенного в открытой архивной информационной системе .
И XML Paper Specification (XPS) [5] , и Office Open XML (OOXML) используют Open Packaging Conventions (OPC), которые предоставляют профиль общего формата ZIP . В дополнение к данным и содержимому документа в разметке XML, файлы в пакете ZIP могут включать другие текстовые и двоичные файлы в таких форматах, как PNG , BMP , AVI , PDF , RTF или даже уже упакованный файл ODF . OPC также определяет некоторые соглашения об именовании и метод косвенности, чтобы обеспечить независимость положения двоичных и XML-файлов в архиве ZIP.
Файлы OPC можно открыть с помощью обычных утилит ZIP. OPC допускает косвенность, фрагментацию и относительную косвенность. [6]
OPC является базовой технологией для многих новых форматов файлов: [7]
OPC изначально поддерживается в Microsoft .NET Framework 3.0 пространством имен System.IO.Packaging . Для других языков существуют библиотеки с открытым исходным кодом.
Начиная с Windows 7 , OPC также изначально поддерживается в Windows API через набор COM- интерфейсов, которые в совокупности называются Packaging API.
В качестве альтернативы для создания и открытия OPC-файлов можно использовать библиотеки ZIP, при условии, что в ZIP-архив включены нужные файлы и соблюдены соглашения.
В терминологии OPC термин «пакет» соответствует архиву ZIP, а термин « часть» соответствует файлу, хранящемуся в ZIP. Каждая часть в пакете имеет уникальное имя части, совместимое с URI, вместе с указанным типом содержимого, выраженным в форме типа носителя MIME . Тип содержимого части явно определяет тип данных, хранящихся в части, и уменьшает проблемы дублирования и неоднозначности, присущие расширениям файлов .
Пакеты OPC также могут включать отношения , которые определяют ассоциации между пакетом, частями и внешними ресурсами. В дополнение к иерархии каталогов и частей пакеты OPC обычно используют отношения для доступа к контенту через направленный граф ассоциаций отношений. Отношения состоят из четырех элементов:
Пакеты OPC могут хранить части, содержащие любые типы данных (текст, изображения, XML, двоичные данные и т. д.). Однако расширение ".rels" зарезервировано для хранения метаданных связей в подпапках "/_rels". Имя подпапки "_rels", расширение файла ".rels" в таком каталоге и имя файла "[Content_Types].xml" в любой папке являются единственными тремя зарезервированными именами для файлов, хранящихся в пакете OPC.
< Расширение по умолчанию = "rels" Тип содержимого = "application/vnd.openxmlformats-package.relationships+xml" />
Все отношения (включая отношения, связанные с корневым пакетом) представлены в виде XML-файлов. Если вы откроете файл ".rels" в текстовом редакторе, вы сможете увидеть фактическую XML-разметку, которая определяет все отношения, на которые нацелена эта часть. Типичный файл отношений содержит XML-код, подобный следующему:
<Связи xmlns= "http://schemas.openxmlformats.org/package/2006/relationships" > <Идентификатор связи = "R0" Тип= "http://schemas.microsoft.com/xps/2005/06/fixedrepresentation" Цель= "/FixedDocumentSequence.fdseq" /> <Идентификатор связи = "R1" Тип= "http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail" Цель= "/Documents/1/Metadata/Page1_Thumbnail.JPG" /> </Связи >
который определяет два отношения для корневого пакета, первое из которых рассматривается как корневой пакет (здесь для раннего документа Microsoft XPS , до того, как он был стандартизирован как спецификация Open XML Paper в коллекции openxmlformats), а другое используется для ссылки на альтернативную форму (здесь — миниатюрное изображение первой страницы документа).
Основные части встроенных документов часто хранятся в папке с именем «/Document» (которая может содержать подкаталоги, если файл содержит несколько связанных документов, каждый из которых имеет различные части), а необязательные части метаданных, которые не нужны для обработки основных частей документа, хранятся в папке с именем «/Metadata»; однако эти фактические имена папок фактически указаны в данных в формате XML в файлах связей « [partname] .rels», а спецификация OPC допускает любую организацию папок, удобную для приложения, и эти два имени папок не являются обязательными.
Он поощряет разбиение документов на небольшие фрагменты. Это лучше для снижения эффекта повреждения файлов. [21] И лучше для доступа к данным: например, вся информация о стиле в одной части XML, каждый отдельный рабочий лист или таблица в своих собственных различных частях. Это обеспечивает более быстрый доступ и меньшее создание объектов для клиентов и упрощает работу нескольких процессов над одним и тем же документом.
В Open Packaging Conventions каждый файл, имеющий ссылку, имеет свой собственный файл _rels со списками косвенности. Это упрощает копирование и вставку некоторой информации со всеми связанными с ней ресурсами в некоторых случаях, обеспечивает область действия имени, чтобы исключить вероятность конфликта имен между файлами и т. д.
{{cite web}}
: CS1 maint: числовые имена: список авторов ( ссылка ){{cite web}}
: Внешняя ссылка в |work=
( помощь ){{cite web}}
: CS1 maint: архивная копия как заголовок ( ссылка )