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 ...
随机推荐
- SQL语句中=null和is null
平时经常会遇到这两种写法:IS NOT NULL与!=NULL.也经常会遇到数据库有符合条件!=NULL的数据,但是返回为空集合.实际上,是由于对二者使用区别理解不透彻. 默认情况下,推荐使用 IS ...
- include使用中注意的问题
发现include文件不必添加,但是一定要放在工程路径下,不然就找不到,或者也可以在文件上写出完整的路径. 可以修改路径为'include "../src/enc_defines.v&quo ...
- 我的 C++ style
int g_tennis; // not use as possible int make_world() { ; return size; } ; enum Color { RED, GREEN } ...
- 全基因组关联分析(Genome-Wide Association Study,GWAS)流程
全基因组关联分析流程: 一.准备plink文件 1.准备PED文件 PED文件有六列,六列内容如下: Family ID Individual ID Paternal ID Maternal ID S ...
- C# Winform学习--- 实现石头剪刀布的游戏
本文使用winform实现简单的石头剪刀布的游戏,主要实现,电脑随机出拳,玩家手动点击出拳:实现简易背景图片3秒切换:简易统计信息. 1.效果图 2.实现代码 新建一个windows窗体程序,用数字1 ...
- 【转】Win7 64bit Oracle 11g 使用PL/SQL Developer 连接时提示“SQL*Net not properly installed”
转载:http://www.cnblogs.com/xihuaodc/p/3189257.html 因为之前的Oracle不能用了,所以重新安装了64位的Oracle,安装一路正常 完了之后安装了P ...
- 获得URL含有中文出现乱码解决
如: http://www.htmlx.culub/?searchWord=工商代理 当获取链接中所对应searchWord的值时,出现 '%E5%B7%A5%E5%95%86%E4%BB%A3%E7 ...
- 《VB语言程序设计(第3版)》总结
我之前因学习昆仑通态的组态软件MCGS,用并学习过VB,还买了一本书<VB语言程序设计(第3版)>.现在在某公司实习,最近接触老的项目,又要用到VB.我就又把那本书大体看了一遍,并对其进行 ...
- 用Python实现一个爬取XX大学电费通知的小脚本
内容简要 1分析网站 2简单爬取 3进阶自定义爬取 4保存进数据库 学校基础设施太差,宿舍电量过低提醒虽然贴在楼下,但是作为低头一族,经常忘记看提醒导致宿舍酣战时突然黑屏,为了避免这种尴尬的场景以及强 ...
- My安卓知识2--使用listview绑定sqlite中的数据
我想在我的安卓项目中实现一个这样的功能,读取sqlite数据库中的数据并显示到某个页面的listview控件中. 首先,我建立了一个Service类,来实现对数据库的各种操作,然后在这个类中添加对数据 ...