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;

  

转载于:https://www.cnblogs.com/icmzn/p/6025129.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
android 使用poi读取高版本excel, 解决以下这两个错误 java.lang.NoClassDefFoundError: Failed resolution of: Ljavax/xml/stream/XMLEventFactory; at org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.(PackagePropertiesMarshaller.java:41) at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:161) at org.apache.poi.openxml4j.opc.OPCPackage.(OPCPackage.java:141) at org.apache.poi.openxml4j.opc.ZipPackage.(ZipPackage.java:97) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:184) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:149) javax.xml.stream.FactoryConfigurationError: Provider com.sun.xml.internal.stream.events.XMLEventFactoryImpl not found at javax.xml.stream.FactoryFinder.newInstance(Unknown Source) at javax.xml.stream.FactoryFinder.newInstance(Unknown Source) at javax.xml.stream.FactoryFinder.find(Unknown Source) at javax.xml.stream.FactoryFinder.find(Unknown Source) at javax.xml.stream.XMLEventFactory.newInstance(Unknown Source) at org.apache.poi.openxml4j.opc.internal.marshallers.PackagePropertiesMarshaller.(PackagePropertiesMarshaller.java:41) at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:161) at org.apache.poi.openxml4j.opc.OPCPackage.(OPCPackage.java:141) at org.apache.poi.openxml4j.opc.ZipPackage.(ZipPackage.java:97) at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:184) at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:149)
阿里云的 code conventions.xml 是一种规范文件,用于指导开发者在编写软件代码时遵循统一的命名规范、代码风格和最佳实践。这个文件主要包括了以下几个方面的规范: 1. 命名规范:规定了各种变量、方法、类、接口、包等的命名规范。例如,变量名应该采用小驼峰命名法,类名应该采用大驼峰命名法等。这样统一的命名规范能够提高代码的可读性和可维护性。 2. 代码风格:规范了代码缩进、空格、换行、注释等方面的风格。例如,使用四个空格进行缩进,每行代码长度不超过80个字符,合理使用注释等。这个规范能够使代码风格统一,便于团队协作和代码审查。 3. 最佳实践:提供了一些最佳的编码实践,例如约定使用 final 关键字修饰不可继承的类,推荐使用 try-catch-finally 进行异常处理等。这些最佳实践能够帮助开发者写出高质量、高效率的代码。 通过遵循阿里云的 code conventions.xml 规范,开发者能够编写出风格统一、易读易懂的代码,减少代码出错的概率,增加代码的可维护性和可扩展性。此外,符合规范的代码也更容易通过代码评审和代码审查,提高团队的协作效率。 总之,阿里云的 code conventions.xml 是一份规范文件,通过遵循其中的规范,开发者能够编写出高质量、易维护的代码,提高软件开发的效率和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值