第6章 Office Open XML Language Reference

補助的ML

OOXMLでは、ここまでに挙げたXML仕様以外にも、補助的MLとしてWordprocessingML、SpreadsheetML、PresentationMLの中で共通に使用されるXML仕様があります。この補助的MLに分類されるXMLデータは単独では存在せず、WordprocessingML、SpreadsheetML、PresentationMLと組み合わせて使われます。この章では、こうした補助MLの中から一部を紹介します。

DrawingML

DrawingMLはチャート、ダイアグラム、シェイプ、画像などを描画するための仕様です。

DrawingMLの仕様は、いくつかのカテゴリに分類されて定義されています。

Basics

Basicsのカテゴリに分類されるのは、以降に示されるすべてのDrawingMLのフレームワークと関連付けられる共通した要素群です。Basicsはさらに以下の詳細なカテゴリに分類されます。

  • Basic Elements

    DrawingMLの中で最も共通に使用される要素群です。DrawingMLのあらゆるカテゴリーの中に存在し、視覚と非視覚の両方の設定が考慮されています。視覚のプロパティを持つものは、対象となるオブジェクトがレンダリングされるときの外観に影響します。非視覚のプロパティを持つものは外観には影響しません。通常、オブジェクトを識別する番号や人間が読み込み可能な名前や、特定のUIでの振る舞いなどのように隠された情報を持っています。

  • Colors

    色の概念は、プレゼンテーションにおいて重要な役割を示します。ほとんどすべてのオブジェクトが対応する色、もしくは色のセットを指定します。色の概念はグラフィカルな傾向があるアプリケーションでは共通のものです。今日、カラーモデルはいくつか異なったタイプの概念が利用可能となっています。DrawingMLにおいてベース文書に指定することができるカラーモデルは以下の4つです。

    • RGB – Red, Green, Blue Color Model
    • HSL – Hue, Saturation, Luminance Color Model
    • Scheme – Scheme Based Color Model
    • Preset – Color Presets Color Model
    • System – Operating System Color Model

    文書作成者はどのカラーモデルが適切であるかどうかを選択することができます。DrawingMLの仕様のなかで詳細に述べられています。

  • Compatibility

    互換性は過去の描画の概念を扱います。過去の描画オブジェクトとはアプリケーションの以前のバージョンによって作成されたが、オプションとして提供されないものです。これらを正しく描画するために、互換性という概念を用いてサポートしています。

  • Locked Canvas

    固定キャンバスは、(資料不足のために)アプリケーションによって認識されない図面です。互換性と似ていますが、方向性は逆です。例えば最新のアプリケーションで作成された図面を旧バージョンのアプリケーションで開いたために編集が不可能といった場合です。このケースでは、オブジェクトは通常すべてのUIからロックされている状態となります。

Audio and Video

DrawingMLは基本的なオーディオとビデオに関するサポートを含んでいます。

プレゼンテーション作成者はスライドがスライドショーで表示されている間、オーディオとビデオの両方を再生できます。それらのメディアをプレゼンテーションに挿入して自動的に、またはマウスクリックに対応しての再生もできます。

こうしたオーディオやビデオをプレゼンテーションと連動させるための仕様が定義されています。

Styles

Officeのアプリケーション、Word、Excel、PowerPointのいずれもテーマというテンプレートを持っています。テーマは書式やレイアウトのセットなどのスタイルが定義されています。

DrawingMLのStylesのカテゴリに含まれるものは文書テーマに共有の要素群です。

Wordパッケージに含まれるテーマ例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<a:theme xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main"
                                                                    name="Office テーマ">
  <a:themeElements>
    <a:clrScheme name="Office">
      <a:dk1>
        <a:sysClr val="windowText" lastClr="000000"/>
      </a:dk1>
      <a:lt1>

同様にExcel、PowerPointのテーマもDrawingMLを使って定義されています。

Text

描画された図形に含まれるテキストのための要素群です。WordprocessingMLで扱うp要素の構造とよく似てはいますが、WordprocessingMLのテキストは印刷された文書のためのレイアウトであるのに対し、描画された図形であるDrawingMLのテキストはプレゼンテーションで扱うようなグラフィックイメージとしての外観が重要な意味を持つことに注意してください。

WordやPowerPointで描画される図形(シェイプ)はすべてテキストを収容するための長方形のエリアを持っています。このテキストのためのエリアは四辺(top、bottom、left、right)にマージンを持っています。

PowerPoint(PresentationML)におけるテキストボックスの場合
PowerPoint(PresentationML)におけるテキストボックスの場合

PresentationMLのスライドデータは次のようになっています。

PresentationMLのスライドデータ
<p:txBody>
    <a:bodyPr rtlCol="0" anchor="ctr"/>
    <a:lstStyle/>
    <a:p>
        <a:pPr algn="ctr"/>
        <a:r>
            <a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" dirty="0" smtClean="0"/>
            <a:t>Text</a:t>
        </a:r>
        <a:endParaRPr kumimoji="1" lang="ja-JP" altLang="en-US" dirty="0"/>
    </a:p>
</p:txBody>

“a:”の名前空間接頭辞を持つ要素がDrawingMLの要素です。

この構造と役割を簡単にすると次のような構図になります。

DrawingMLの構造と要素
DrawingMLの構造と要素

bodyPr要素はテキストのアンカーポイントや、シェイプとの位置の自動調整、段組数やテキストの折り返し、3D効果などを定義します。

lstStyle要素は段落のスタイル属性やリストレベルを定義します。

p要素が段落です。WordprocessingMLと同様に段落属性のpPr要素やRunのr要素を子要素として持ちます。テキストデータはt要素です。

Tables

テーブルを描画するための要素群です。テーブルのレイアウトは単純な罫線や色だけでなく、3D効果などのさまざまなレイアウト機能があります。

Tables
Tables

PowerPointでスライドに表を挿入した場合、スライドのデータは次のような構造になります。

スライドに挿入した表のデータ構造
スライドに挿入した表のデータ構造
実際のスライドのデータサンプル
<a:graphic>
  <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table">
    <a:tbl>
      <a:tblPr firstRow="1" bandRow="1">
        <a:tableStyleId>{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}</a:tableStyleId>
      </a:tblPr>
      <a:tblGrid>
        <a:gridCol w="3048000"/>
        <a:gridCol w="3048000"/>
      </a:tblGrid>
      <a:tr h="370840">
        <a:tc>
          <a:txBody>
            <a:bodyPr/>
            <a:lstStyle/>
            <a:p>
              <a:r>
                <a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" dirty="0" smtClean="0"/>
                <a:t>A</a:t>
              </a:r>
              <a:endParaRPr kumimoji="1" lang="ja-JP" altLang="en-US" dirty="0"/>
            </a:p>
          </a:txBody>
          <a:tcPr/>
        </a:tc>
        <a:tc>
          <a:txBody>
            <a:bodyPr/>
            <a:lstStyle/>
            <a:p>
              <a:r>
                <a:rPr kumimoji="1" lang="en-US" altLang="ja-JP" dirty="0" smtClean="0"/>
                <a:t>B</a:t>
              </a:r>
            </a:p>
          </a:txBody>
          <a:tcPr/>
        </a:tc>
    </a:tr>
    ...
    </a:tbl>

a:tbl要素がDrawingMLのテーブル要素です。

3D Aspects

3D立体図形を描画するための要素群です。オブジェクトに関する立体プロパティとオブジェクトに関するスタイル情報の2つに分類されます。立体プロパティは幾何学的なオブジェクトの定義、スタイル情報はオブジェクトの傾斜や輪郭などの外観についての定義です。

Coordinate Systems and Transformations

位置情報を示すための座標軸などに関する要素群です。オブジェクトのスケーリングや回転表現の情報を表します。

Shape Properties and Effects

シェイプの色や塗りつぶしなどの効果に関する要素群です。

Shape Definitions and Attributes

シェイプを描画するための要素群です。

Pictures

画像ファイルなどを埋め込むための要素群です。ベースとなる画像ファイルの情報や、さらにその画像を加工した場合のデータもこのカテゴリの要素群で表されます。

WordprocessingML Drawing

Word文書で描画オブジェクトなどを挿入するために使用される要素群です。WordprocessingML文書にチャート、ダイアグラム、ロックされたキャンバス、画像、これらが存在するときにページ上に配置された情報を含んでいます。WordprocessingMLにおけるDrawingMLオブジェクトは、印刷されたページ上での位置を示すためのアンカー情報や、含まれるテキストフローなどの情報を表します。

SpreadsheetML Drawing

Excelのワークシートで描画オブジェクトなどを挿入するために使用される要素群です。

Charts

グラフを描画するための要素群です。

Chart Drawing

グラフと図形の描画を組み合わせて使うための要素群です。

Diagrams

ダイアグラムを描画するための要素群です。

VML

Vector Markup Language(VML)は、ベクター画像のための言語です。OOXMLオリジナルではなく、レガシーなXMLベースの仕様で、Transitional仕様でのみ記述可能です。

DrawingMLとの変換にはロスがあり、その要因として次の点が挙げられます。

  • DrawingMLが(入れ子で構成するような)階層的なXMLで構成されるのに対し、VMLはフラットなXMLで構成されます。
  • VMLでは、DrawingMLでは一緒に扱えないプロパティを組み合わせて使用できます。

VMLでは位置決定とサイズ処理を指定するためにCSS2スタイル属性のプロパティを使用しています。

VMLはWordprocessingMLにおけるテキストボックスやシェイプ、またはSpreadsheetMLにおけるコメントやコントロールなどでDrawingMLが適用されない場合に使用されます。VMLはもともとOffice 2000で取り入られた方法であり、OOXMLで採用されているのは後方互換性のためであると仕様書で書かれています。

DrawingML同様、WordprocessingML、SpreadsheetML、PresentationMLそれぞれで異なる名前空間を持ちます(OOXML以前のOffice文書のための仕様で、ISO/IEC 29500の仕様書中では「word-processing document」のように表記されています。)

Office文書
urn:schemas-microsoft-com:office:office
WordprocessingML
urn:schemas-microsoft-com:office:word
SpreadsheetML
urn:schemas-microsoft-com:office:excel
PresentationML
urn:schemas-microsoft-com:office:powerpoint

Shape Element

Shape要素はVMLの基本的なブロックです。シェイプはその外観と振る舞いを制御する多くの属性とサブ要素を定義します。シェイプはpath(シェイプの縁取りとなるライン)とサイズ(幅と高さ)を必ず定義する必要があります。

単位を指定しない場合、基本的にはピクセルを単位とします。

VMLのShape
<v:shape fillcolor="red"
style="position:relative;top:1;left:1;
       width:100;
       height:50"
       path="m 1,1 
             l 1,50, 100,50, 100,1 x e">
</v:shape>

上の例では、図形の色がfillcolor="red"、配置がposition="relative"、位置が上端からtop="1"、左端からleft="1"、幅width="100"、高さheight="50"であることが分かります。

pathの指定は独自の記法を持ちます。mが線の始点を示し、上の例では続く1,1となります。lから線の描画が開始され、始点である1,1から1,50、100,50、100,1へ線を描画します。xは線の終点を示し、上の例では始点が1,1であるため1,1となります。eでpath自体の終了を示します。pathにおける座標は、実際には幅と高さの指定にマッピングされた値として描画されます。

同じpathに複数のm、xを持つことが可能です。

Group Element

Group要素は複数のオブジェクトを集めて単一のユニットとして扱うために使用されます。Group要素によって、Shape要素を組み合わせた複雑な図形を1つのオブジェクトとして扱えます。

座標空間に自身の親のコンテナを参照するようなオブジェクトをグループに含めた場合、座標の基準はグループ内のローカル座標となります。

ShapeType Element

ShapeType要素はシェイプのためのセットされた定義やテンプレートの定義です。テンプレートはShapeType要素を参照したShape要素を作成することで具体化されます。また、Shapeはその参照したShapeTypeをオーバーライドしたり、属性や要素を定義することもできます。

Primerでは、VMLによるOfficeArtが例示されています。ShapeType要素で定義した形状をShape要素のTypeで呼び出し、呼び出し先のShape独自の変更箇所を属性で記述しています。

Math

Mathは数式(方程式)のためのXMLベースの言語仕様で、文書における方程式の構造と外観を定義しています。数式のためのXML言語としては、MathMLという数学用マークアップ言語がW3Cの仕様として有名ではありますが、OOXMLでは、http://schemas.openxmlformats.org/officeDocument/2006/mathという名前空間が定義されており、Office Mathという独自仕様です。

Office Mathは、次のように文書で数式が挿入された場合に使われます。

Wordで数式を挿入する
Wordで数式を挿入する

文書パーツに出現するOffice Math の構造は、独立数式(段落)であるのか文中数式(行内)であるのかによって変化します。

独立数式の場合、oMathPara要素がWordprocessingMLのp要素の子要素として出現します。

独立数式の例
<w:p w:rsidR="00EE6F79" w:rsidRPr="00EE6F79" w:rsidRDefault="003C6D61"
  w:rsidP="00EE6F79">
  <w:pPr>
  (段落書式)
  </w:pPr>
  <m:oMathPara>
    <m:oMath>
      Office Mathによる数式
    </m:oMath>
  </m:oMathPara>
</w:p>

oMathPara要素はoMathparaPr要素という段落書式のための子要素を持つ場合があります。oMathParaPr要素は独立数式の配置を表すjc要素を子要素として持っています。jc要素は子要素はなく、val属性の値で、“center”、“centerGroup”、“left”、“right”の値で段落位置を表します。

oMathParaの構造
oMathParaの構造

文中数式の場合は、oMath要素がWordprocessingMLのp要素の子要素として出現します。

文中数式の例
<w:p w:rsidR="004959F6" w:rsidRDefault="009E18A1" w:rsidP="009E18A1">
  <w:pPr>
    (段落書式)
  </w:pPr>
  <w:r>
    <w:rPr>
      <w:rFonts w:hint="eastAsia"/>
      <w:sz w:val="36"/>
    </w:rPr>
    <w:t xml:space="preserve">行内テキスト</w:t>
  </w:r>
  <m:oMath>
    Office Mathによる数式
  </m:oMath>
</w:p>

独立数式、文中数式のいずれも数式本体はoMath要素によって表されます。

Bibliographic

Wordでは、資料文献のリストを作成し、それを引用文献や文献目録として自動作成する機能があります。

Word 2019で資料文献を作成する
Word 2019で資料文献を作成する
引用文献や文献目録の挿入
引用文献や文献目録の挿入

Wordで資料文献を作成すると、Bibliographicパーツが作成されます。このパーツは引用文献と文献目録を自動作成するためのエントリーを格納します。

Bibliographicパーツの例
<b:Sources SelectedStyle="\MLA.XSL" StyleName="MLA"
    xmlns:b="http://schemas.openxmlformats.org/officeDocument/2006/bibliography"
    xmlns="http://schemas.openxmlformats.org/officeDocument/2006/bibliography">
    <b:Source>
        <b:Tag>Ant</b:Tag>
        <b:SourceType>InternetSite</b:SourceType>
        <b:Guid>{5602474A-BD65-4681-B164-C13666927C62}</b:Guid>
        <b:LCID>0</b:LCID>
    <b:Author>
        <b:Author>
            <b:Corporate>Antenna House</b:Corporate>
       </b:Author>
    </b:Author>
    <b:Title>PDF、文書変換と表示、XSL-FO組版のアンテナハウス株式会社</b:Title>
    <b:URL>http://www.antenna.co.jp/</b:URL>
    <b:RefOrder>1</b:RefOrder>
    </b:Source>
    <b:Source>
        <b:Tag>Ecm</b:Tag>
        <b:SourceType>InternetSite</b:SourceType>
        <b:Guid>{B3E1BDA1-DCCC-4882-A72F-2073393BB206}</b:Guid>
        <b:LCID>0</b:LCID>
    <b:Author>
        <b:Author>
        <b:Corporate>Ecma</b:Corporate>
      </b:Author>
    </b:Author>
    <b:Title>TC45 - current work</b:Title>
    <b:URL>http://www.ecma-international.org/news/TC45_current_work/
                                                     TC45-2006-50_final_draft.htm</b:URL>
    <b:RefOrder>2</b:RefOrder>
    </b:Source>
</b:Sources>