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;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM