スライドの仕組みとその内容
Presentation
pptフォルダにあるpresentation.xmlがPresentationMLのメインパーツです。プレゼンテーションを構成するスライドの情報を列挙しています。さらに、プレゼンテーションとしての属性を格納しています。
presentation.xmlはpresentation要素をルートとして、以下の子要素があります。
要素名 | 説明 |
---|---|
sldMasterIdLst | スライドマスターIDリスト |
notesMasterIdLst | ノートマスターIDリスト |
handoutMasterIdLst | 配布資料マスターIDリスト |
sldIdLst | スライドIDリスト |
sldSz | 表示するスライドサイズ |
notesSz | ノートスライドサイズ |
smartTags | スマートタグ |
embeddedFontLst | 埋め込みフォントリスト |
custShowLst |
List of Custom Shows。 対応するプレゼンテーションでは表示順の変更ができます。custShowLst要素は子要素として複数のsldLst要素を格納します。sldLst要素は子要素にスライド参照情報を持つsld要素を格納します。 |
photoAlbum |
Photo Album Information(フォトアルバム情報)。 フォトアルバムは画像のリストです。このリストは1つ以上のスライドに展開され、同じレイアウト、書式で表示されます。 |
custDataLst | 顧客データリスト |
kinsoku | 禁則処理 |
defaultTextStyle | 規定のテキストスタイル |
modifyVerifier | 更新 |
extLst | 拡張リスト |
sldIdLst要素でプレゼンテーションを構成するスライドを列挙しています。スライドのデータはslidesフォルダにありますが、ファイル名ではなく、スライドのID値を列挙しています。
たとえばスライドが2つのプレゼンテーションの場合、presentation/sldIdLstは次のように記述されています。
sldId要素でそのスライドデータを持つスライドパーツを指定します。スライドはsldId要素として、プレゼンテーションで表示するページ順に列挙されます。
sldId要素は2つの属性を持っています。id属性はプレゼンテーションにおけるスライド識別のID、r:id属性が関連付けの参照IDです。sldId要素の情報からスライドデータを参照するには、r:id属性のID値を使います。
presentation.xmlの関連付けファイルはppt/_relsフォルダのpresentation.xml.relsという名前のファイルです。
このファイルの内容は次のようになっています。
この中で、sldId要素のr:id属性で指定されたID値を持つRelationship要素を探すと、次の2つが該当します。
ここから、プレゼンテーションを構成するスライドがslides/slide1.xmlとslides/slide2.xmlであることがわかります。
sldIdLst要素と同様の形式でsldMasterIdLst要素、notesMasterIdLst要素、handoutMasterIdLst要素によってスライドマスター、ノートマスター、配布物マスターが列挙されています。
slide
スライドパーツがプレゼンテーションのコンテンツ(スライドデータ)を実際に格納するパーツです。スライドパーツはslidesフォルダにスライドの数だけ作成されます。
スライドパーツの内容は、sld要素をルートとして以下の構造になっています。
cSld要素にスライドのデータがあります。
PowerPointのスライドに記述される内容は、描画オブジェクトなどの図形データかSmartArtなどのオブジェクトとして挿入されます。したがって、これらはシェイプとして扱われます。
シェイプを親子、グループ関係で構造化したシェイプツリーを表すspTree要素が親要素となって、その中にすべてのシェイプデータが定義されています。
spTree要素の子要素一覧
要素名 | 説明 |
---|---|
cxnSp (Connection Shape) | シェイプとシェイプを繋ぐ、特殊なシェイプであるシェイプコネクターのための要素です。シェイプコネクターの代表例としては、矢印付きの直線や曲線などがあります。 |
extLst | 拡張リスト |
graphicFrame | 描画フレーム |
grpSp | グループシェイプ |
grpSpPr | グループシェイプ属性 |
nvGrpSpPr | 非表示グループシェイプ属性 |
pic | 画像 |
sp | シェイプコネクターを除く、シェイプ全般を表す要素です。この子要素としてシェイプデータを記述します。 |
sp要素の子要素一覧
テキストデータの場合、シェイプデータとしてsp要素に格納されます。
要素名 | 説明 |
---|---|
extLst | 拡張リスト |
nvSpPr | 非表示シェイプ属性 |
spPr | シェイプのプロパティ |
style | シェイプのスタイル |
txBody | シェイプ中のテキストデータ |
シェイプのテキストデータは、sp要素の子要素のtxBody要素の中に段落データとして格納されます。
PresentationMLでは段落に関するp要素などの仕様を持っていません。これらはDrawingMLという描画オブジェクトのためのXML仕様で定義されている要素を使います。したがって、txBodyの子要素はDrawingMLの名前空間が指定されています。
txBody要素の中にDrawingMLのp要素を使ってテキストデータが定義されています。
DrawingMLの段落であるp要素はWordprocessingMLでのp要素とほぼ同じ構造です。 p要素の中にr要素のRunがあり、その子要素のt要素の内容が実際のテキストデータです。
画像データはpic要素に格納されます。
この例では画像(jpg)を埋め込んでいます。cNvPr要素のname属性には埋め込んだオブジェクト名(ファイル名)があります。実際にパッケージに埋め込まれた画像データは、pptフォルダ下のmediaフォルダにすべて格納されています。
ここで、オブジェクト名=パッケージの画像ファイル名ではないことに注意してください。実際のパッケージの中の画像ファイルは、pic要素の中の下記の部分で指定されています。
blipFill要素は描画オブジェクトの画像タイプを表しますが、この中のblip要素(DrawingMLの要素です)で画像データへの参照を示しています。この参照のための関連付けIDは、“rId3” となっています。スライドパーツの関連付けのファイルは、slidesフォルダ下の_relsフォルダにスライドパーツのファイル名+“.rels”のファイル名で格納されています。
それぞれのスライドパーツに対応した関連付けのファイルを見ると、先ほどの画像ファイルの関連付けは以下のように書かれています。
ここから、埋め込まれた画像のデータが、"../media/image2.jpeg"であることがわかります。
slideMaster
スライドマスターはスライドを作成するときのベースとなるテンプレートです。presentation.xmlにはスライドマスターを示すsldMasterIdLst要素があり、ここでスライドマスターの関連付けIDが列挙されています。
さらに、ppt/_rels/presentation.xml.relsには、以下のように対象となるスライドマスターのIDとURIが定義されています。
スライドマスターのパーツはpptフォルダ下のslideMastersフォルダに格納されています。
このサンプルではスライドマスターは1つだけですが、ユーザーが追加したスライドマスターにしたがってパーツは増えます。
スライドマスターのパーツにはルートをsldMaster要素に、以下の子要素があります。
要素名 | 説明 |
---|---|
clrMap | カラースキーマMap |
cSld | スライドデータ |
extLst | 拡張リスト |
hf | スライドマスターのヘッダー・フッター情報 |
sldLayoutIdLst | スライドレイアウトリスト |
timing | スライドレイアウトのためのタイミング情報 |
transition | スライドレイアウトのスライド切り換え情報 |
txStyles | スライドマスターのテキストスタイル |
スライドマスターはスライドレイアウトの情報を持っています。したがって、sldLayoutIdLst要素にはスライドレイアウトの関係付けIDが列挙されています。
このようにスライドマスターの中のスライドレイアウトの情報は関連付けIDを列挙する形になっています。
スライドマスターの関連付けファイルは、ppt/slideMasters/_relsフォルダに“スライドマスターのファイル名”+“.rels”という名前で存在します。
この関連付けファイルには、スライドレイアウトパーツのURIが定義されています。
slideLayout
スライドはそれぞれスライドレイアウトの情報が付随しています。このスライドレイアウトのパーツがpptフォルダ下のslideLayoutsフォルダに格納されています。PowerPointでスライドレイアウトを変更しようとすると、複数の色々なレイアウトが表示されます。パッケージのスライドレイアウトのパーツはこのすべてのスライドレイアウトの数だけ存在します。ファイル名はslideLayout1.xml、slideLayout2.xmlのように番号付けがされています。
これら複数のスライドレイアウトから1つを選択し、そのスライドの表示レイアウトが決まります。slideフォルダ下のスライドデータには、直接どのスライドレイアウトが選択されているのかは指定されていません。スライドレイアウトとスライドデータを結び付けるのは関連付けです。
スライドデータの関連付けファイルはslides/_relsフォルダにあります。ファイル名は、それぞれのスライドデータに応じてslide1.xml.rels、slide2.xml.relsとなっています。
この中で、スライドレイアウトの関連付けがあります。
スライドレイアウトのType定義を持つRelationship要素によって、どのスライドレイアウトが使われているかがわかります。
スライドレイアウトのパーツの内容は、sldLayout要素をルートに、以下のように定義されています。
要素名 | 説明 |
---|---|
cSld | スライドレイアウトに適用される共通スライドデータ |
clrMapOvr | OverrideするカラースキーマMap |
transition | スライドレイアウトで定義されるスライド間の遷移アニメーション情報 |
timing | アニメーションやスライド制御におけるタイミング情報。スライドマスターによる共通設定をそのスライドレイアウトにおいて上書きする。 |
hf | スライドレイアウトのヘッダー・フッター情報 |
extLst | 拡張リスト |
スライドと同様に、cSld要素にスライドレイアウトの内容が格納されます。