第2章 パッケージ

リレーションシップ(関連付け)

パッケージは複数のパーツで構成されています。これらのパーツの構成とパーツへの参照を解決する役割をリレーションシップ(関連付け)といいます。パッケージの中には階層ごとに複数の関連付けファイルが存在します。

関連付けファイルは必ず、パーツと同じ階層にある_relsというフォルダの中に作成され、元となるファイル名に“.rels”の拡張子を付けたものとなっています。たとえばA.xmlというファイル名のパーツの関連付けファイル名はA.xml.relsとなります。これをパーツリレーションシップと呼びます。

パッケージのルート階層では、.relsが関連付けファイル名です。このファイルを指してパッケージリレーションシップと呼びます。

パッケージの階層と関連付けの例
パッケージの階層と関連付けの例

関連付けファイルには、Relationships要素をルートとして、Relationship要素が列挙されます。

_rels/.relsでメインパーツを示すRelationship要素
<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/
           officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>

Relationship要素はType属性とTarget属性を持ちます。Type属性の値は任意の文字列で、Target属性で示されるファイルの内容タイプを定義します。

例で示したType属性値の、"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument"はOOXMLのメインパーツであることを表します。

Relationship要素は参照のためのId属性値を持っています。参照元と参照先はこのId値とRelationship要素によって結び付けられます。

また、関連付けにはExplicit(明確)とImplicit(暗黙)の2種類があります。

Explicit(明確)な関連付けの場合、パーツの関連付けは .relsファイル内のRelationship要素によって明確に定義されるべきものであり、参照元から該当するRelationship要素のId値(またはそれに相当するもの)の参照、Relationship要素のTarget属性値のURIから参照先を得る、という順序を踏んでパーツを参照します。

Implicit(暗黙)の関連付けの場合、Relationship要素にId値(または相当する値)がなくとも参照が成立します。Relationship要素に記述されたType属性の値が暗黙的に利用され、Target属性の値のURI(参照先)と関連付けられます。参照元では、Id値(または相当する値)があれば、参照先の該当箇所を直接参照できます。

パーツ名

パーツ名にはどんな文字を使っても良いのでしょうか?  パーツ名の格納についてはISO 29500-2 Annex A.に記述があります。

端的には、IRIまたはURIで表せる文字列として格納されます。非ASCII文字列は変換されてパッケージ内に配置されます。

関連付けを記述するときはUnicode文字列でパーツ名を表記することも可能です。このときアプリケーションによってIRI、URIへと変換され処理されます。