OPC的理解Open Packaging Conventions
Open Packaging Conventions (OPC)
博客地址:www.cnblogs.com/icmzn
OPC是一个文件容器技术。被微软创建,用来存储XML或者非XML文件结合起来的规范, 称为Open XML Paper Specification (OpenXPS)文档。
基于OPC文件格式的文档组合了文档元素无关的优势以及文件非常小,与正常的XML相比。
扩展形式为XML,或者ZIP。
1. 用法
XML Paper Specification (XPS)和Office Open XML (OOXML)使用Open Packaging Conventions (OPC)规范, 提供了常见的ZIP文件格式。 文档在ZIP文件中可以包含其他的text或者binary文件,如PNG,BMP, AVI,PDF,RTF等。 OPC定义了明明规范,和提供了间接的方式允许位置无关,并且不依赖于二进制和XML文件,在ZIP结构中。
OPC文件可以被常用的ZIP工具打开。
OPC匀速间接、分块、相对寻址。
2. 采用OPC规范的文件格式如下:
3. 编程支持
(1)在Win7之后,OS中提供API 通过COM接口。
(2)可选, ZIP库文件可以用来创建和打开OPC文件。只要合适的文件包含ZIP中。
4. 结构说明
In OPC terminology,在OPC技术术语中:Package对应于ZIP结构, part对应于在ZIP文件中存储的文件。
每一个part在Package中都有一个唯一的URI, 一个兼容的part Name并关联一个指定的content-type
即MIME media type, 在part中报春数据的类型, 减少重复以及模糊的问题。
OPC中的Package中也包含relationships, 其定义了package、parts以及外部资源中的关联方式。另外对于目录的层次以及parts, OPC package通常使用 relationships来获取内容。
relationships由4部分组成:
ID、source(package或者part在package中的资源)、relationsihip type(URI类的表示类型)、target目标(一个uri指向另一个part在同一个package中或者外部的资源中)
OPC的 package能保存parts,且part能够包含一些数据类型如:text,image,xml,binary等等其他。注意:“.rels”扩展,是保留的,用于保存关系metadata, 在“/_rels” 子文件夹中。其中子文件夹的名字“_rels”、在项目目录下的".rels"、以及在其他的文件加下“[content_type].xml”文件,这三个名字是保留字,在整个OPC的package中。具体的详细介绍如下:
(1)/[Content_Types].xml file
在根目录之下。这个文件定义了MIME 媒体类型,用于所有的parts在package中。这个文件基于“文件扩展”定义了默认的匹配关系, 以及通过content-types, 如果与特定默认的文件扩展不同,将会覆盖特定的parts。
其MIMT类型如下:
(2)/_rels
文件夹/_rels文件夹下的根目录中,保存着package下的所有relationships,并作为整体。文件“/_rels”文件夹一般包括“.rels”文件, 这个.rels文件是一个XML文件,在这个文件保存着the starting package-level relationships.
(3)[partname].rels
每一个part拥有其自己的relationships。 _rels文件夹,可以在这里找到package中的特定part的关系,即在每一个part的目录之下,可以有一个独有_rels的文件夹,如果独有的_rels有关系,则其会包含一个文件"xxx.rels"。例如, 如果 AAA part 拥有自己的关系,则这将会有一个AAA .xml.rels在当前的文件夹/_rels之下。
所有的关系(包括根package的关系)都以xml文件来表示。如果用文本打开一个.rels文件,可以看到xml的信息,这些信息定义了所有的关系。典型的关系内容如下:
5. 分块
鼓励将一个documents分为多个小chunks块。 有以下优势:(1)可以减少file corruptions庞大扩张, (2)其次可以方便接近数据。例如,在一个xmlpart的所有信息类型中,每一个不同的parts的部分,可以快速获取以及产生少量的对象,可以方便的多线程处理对于同一个document。
6. 相对寻址
在OPC 的package中,每一个file都引用它自己的_rels 文件,以相对的方式。这样可以非常容易来cut和paste 一些信息与相关的资源。
endl;
OPC的理解Open Packaging Conventions的更多相关文章
- (翻译)OpenDocument and Open XML security (OpenOffice.org and MS Office 2007)
标题:Open Document 和 Open XML安全性(OpenOffice.org and MS Office 2007) 摘要,OpenDocument 和 Open XML 都是 Offi ...
- WPF学习之路初识
WPF学习之路初识 WPF 介绍 .NET Framework 4 .NET Framework 3.5 .NET Framework 3.0 Windows Presentation Found ...
- WPF 图片显示中的保留字符问题
在WPF中显示一张图片,本是一件再简单不过的事情.一张图片,一行XAML代码即可. 但是前段时间遇到了一件奇怪的事: 开发机上运行正常的程序,在某些客户机器上却显示不了图片,而且除了这个问题,其它运行 ...
- .net文件压缩和解压及中文文件夹名称乱码问题
/**************************注释区域内为引用http://www.cnblogs.com/zhaozhan/archive/2012/05/28/2520701.html的博 ...
- C#- 压缩和解压缩的研究 .
用了第二种方法,感觉很不错,其他都没用过了.摘录下来,做一个备忘. 最近在网上查了一下在.net中进行压缩和解压缩的方法,方法有很多,我找到了以下几种: 1.利用.net自带的压缩和解压缩方法GZip ...
- .net中压缩和解压缩的处理
最近在网上查了一下在.net中进行压缩和解压缩的方法,方法有很多,我找到了以下几种: 1.利用.net自带的压缩和解压缩方法GZip 参考代码如下: //======================= ...
- WPF 中的 Pack URI地(资源文件加载)
参考资源网http://msdn.microsoft.com/zh-cn/library/aa970069.aspx#Absolute_vs_Relative_Pack_URIs 在 Windows ...
- Using XSLT and Open XML to Create a Word 2007 Document
Summary: Learn how to transform XML data into a Word 2007 document by starting with an existing docu ...
- .NET中zip的压缩和解压
在.NET可以通过多种方式实现zip的压缩和解压:1.使用System.IO.Packaging:2.使用第三方类库:3.通过 System.IO.Compression 命名空间中新增的ZipArc ...
随机推荐
- windows与linux之间文件的传输方式总结(转)
当然,windows与linux之间文件的传输的两种方式有很多,这里就仅仅列出工作中遇到的,作为笔记: 方法一:安装SSH Secure Shell Client客户端 安装即可登录直接拖拉到linu ...
- C#中的?和??的用法
1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空.例如:string str=null; 是正确的,int i=null; 编译器就会报错.为了使值类型也 ...
- Python基础之:List
Python:List (列表) list 为Python内建类型,位于__builtin__模块中,元素类型可不同,元素可重复,以下通过实际操作来说明list的诸多功能,主要分为增.删.改.查 li ...
- 不起眼的 z-index 却能牵扯出这么大的学问
z-index在日常开发中算是一个比较常用的样式,一般理解就是设置标签在z轴先后顺序,z-index值大的显示在最前面,小的则会被遮挡,是的,z-index的实际作用就是这样. 但是你真的了解z-in ...
- Java-计划存储
Hive:Hive文档 Hdfs官方 Spark官方 About云中文论坛 书单:2015豆瓣书单 豆瓣千人8.0+书单 编程入口:Eclipse servlet java8 快捷键整理 MyBat ...
- Asp.Net MVC4入门指南(4):添加一个模型
在本节中,您将添加一些类,这些类用于管理数据库中的电影.这些类是ASP.NET MVC 应用程序中的"模型(Model)". 您将使用.NET Framework 数据访问技术En ...
- [Notes] Timer Comparision when turn influence computing on/off
Overall algorithm – bunny 关闭influence计算 ...
- xcode5.1+osx.10.9编译x264的问题
最近忙于编译x264开源框架进行视频编码,百度了很多方法没有实现.很多方法都过时了.根本不能成功.因为在xcode5以后,编译器不在默认为gcc,而是Apple自带的clang编译器.本人试了很多方法 ...
- sql学习
1.改变表的某一字段的长度: alter table tt modify a char(2000); 2.不想打开表就查看某一字段的长度可用下面的方法: select length(a),leng ...
- Tornado中Cookie过期问题
首先,web应用程序是使用HTTP协议进行数据传输,因为HTTP协议是无状态的,所以一旦提交数据完成后,客户端和服务器端的连接就会被关闭,再次进行数据的交换就得重新建立新的连接,那么,有个问题就是服务 ...