Office Open XMLファイル形式は、電子オフィス文書を表現するために使用できるファイル形式のセットです。ワープロ文書、表計算ソフト、プレゼンテーション用の形式に加え、数式、図表、参考文献などの特定の資料用の形式も用意されています。
これらのフォーマットはマイクロソフトによって開発され、 Microsoft Office 2007で初めて登場しました。2006年12月から2008年11月にかけて標準化され、最初はEcma InternationalコンソーシアムによってECMA-376として、その後、議論の的となった標準化プロセスを経て、ISO/IEC合同技術委員会1によってISO/IEC 29500:2008として標準化されました。

Office Open XML ドキュメントは、 Open Packaging Conventions (OPC) パッケージに格納されます。OPC パッケージは、 XMLやその他のデータ ファイル、およびそれらの間の関係の仕様を含むZIP ファイルです。 [ 2 ]ドキュメントの種類に応じて、パッケージの内部ディレクトリ構造と名前が異なります。アプリケーションは、関係ファイルを使用して個々のセクション (ファイル) を特定します。各セクションには、特にMIMEメタデータなどのメタデータが付随しています。
基本パッケージには、ルートディレクトリに[Content_Types].xmlという XML ファイルがあり、さらに_rels、docProps、およびドキュメントの種類に応じたディレクトリ (例えば、.docx ワープロソフトの場合はwordディレクトリ) の 3 つのディレクトリが含まれています。wordディレクトリには、ドキュメントの中核となるコンテンツである document.xml ファイルが格納されています。
関係ファイルの例(word/_rels/document.xml.rels)は以下のとおりです。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> <Relationships xmlns= "http://schemas.microsoft.com/package/2005/06/relationships" > <Relationship Id= "rId1" Type= "http://schemas.microsoft.com/office/2006/relationships/image" Target= "http://en.wikipedia.org/images/wiki-en.png" TargetMode= "External" /> <Relationship Id= "rId2" Type= "http://schemas.microsoft.com/office/2006/relationships/hyperlink" Target= "http://www.wikipedia.org" TargetMode= "External" /> </Relationships>そのため、文書内で参照されている画像は、関係ファイル内で タイプのすべての関係を検索することで見つけることができますhttp://schemas.microsoft.com/office/2006/relationships/image。使用する画像を変更するには、関係を編集してください。
以下のコードは、ハイパーリンクのインラインマークアップの例を示しています。
<w:hyperlink r:id= "rId2" w:history= "1" xmlns:r= "http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:w= "http://schemas.openxmlformats.org/wordprocessingml/2006/main" >この例では、Uniform Resource Locator(URL)は、リレーションシップID(この場合は「rId2」)を介して参照されるリレーションシップのTarget属性に格納されています。リンクされた画像、テンプレート、その他のアイテムも同様の方法で参照されます。
画像はタグを使用して埋め込んだりリンクしたりできます。
<v:imagedata w:rel= "rId1" o:title= "example" />これは画像ファイルへの参照です。すべての参照はリレーションシップによって管理されます。たとえば、document.xml は画像とのリレーションシップを持っています。document.xml と同じディレクトリに _rels ディレクトリがあり、その中に document.xml.rels というファイルがあります。このファイルには、タイプ、ID、場所を含むリレーションシップ定義があります。ID は XML ドキュメントで使用される参照 ID です。タイプはメディアタイプの参照スキーマ定義であり、場所は ZIP パッケージ内の内部ロケーション、または URL で定義された外部ロケーションです。
Office Open XML は、文書のプロパティを格納するために、ダブリン コアメタデータ要素セットとDCMIメタデータ用語を使用します。ダブリン コアは、ドメインを横断した情報リソース記述のための標準規格であり、 ISO 15836:2003で定義されています。
Dublin Coreメタデータを使用するドキュメントプロパティファイル( docProps/core.xml )の例を以下に示します。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cp:coreProperties xmlns:cp= "http://schemas.openxmlformats.org/package/2006/metadata/core-properties" xmlns:dc= "http://purl.org/dc/elements/1.1/" xmlns:dcterms= "http://purl.org/dc/terms/" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" > <dc:title> Office Open XML </dc:title> <dc:subject>ファイル形式と構造</dc:subject> <dc:creator> Wikipedia </dc:creator> <cp:keywords> Office Open XML、メタデータ、ダブリンコア</cp:keywords> <dc:description> Office Open XMLはISOを使用します15836:2003 </dc:description> <cp:lastModifiedBy> Wikipedia </cp:lastModifiedBy> <cp:revision> 1 </cp:revision> <dcterms:created xsi:type= "dcterms:W3CDTF" > 2008-06-19T20:00:00Z </dcterms:created> <dcterms:modified xsi:type= "dcterms:W3CDTF" > 2008-06-19T20:42:00Z </dcterms:modified> <cp:category>文書ファイル形式</cp:category> <cp:contentStatus>最終版</cp:contentStatus> </cp:coreProperties>Office Open XML ファイルには、Microsoft Office 製品ラインのアプリケーションに対応する特殊なマークアップ言語でエンコードされた複数のドキュメントが含まれる場合があります。Office Open XML は、27 の名前空間と 89 のスキーマモジュールを使用して、複数の語彙を定義します。
主なマークアップ言語は以下のとおりです。
共有マークアップ言語の資料には以下が含まれます。
上記のマークアップ言語に加えて、カスタムXMLスキーマを使用してOffice Open XMLを拡張することもできます。
ODFの編集者であるパトリック・デュルソーは、OOXMLとODFのマークアップスタイルを、「要素側」と「属性側」という議論の二つの側面を表していると捉えている。彼は、OOXMLは「このアプローチの要素側」を表していると指摘し、KeepNext例として要素を挙げている。
<w:pPr> <w:keepNext/> … </w:pPr>fo:keep-nextそれとは対照的に、ODFでは同じ意味のために要素ではなく単一の属性を使用すると彼は指摘している。 [ 3 ]
Office Open XML の XML スキーマは、読み込み時間の短縮と解析速度の向上を重視しています。[ 4 ] 2007年4月の時点で最新のアプリケーションを使用したテストでは、XML ベースのオフィス文書はバイナリ形式よりも読み込みが遅いことがわかりました。[ 5 ]パフォーマンスを向上させるため、Office Open XML では一般的な要素に非常に短い要素名を使用し、スプレッドシートでは日付をインデックス番号 (1900 年または 1904 年から) として保存します。[ 6 ]体系的で汎用的であるため、Office Open XML では通常、構造化されたプロパティを可能にする複数の属性を使用するのではなく、データとメタデータ (プロパティの要素名がPrで終わる) に個別の子要素を使用します。Office Open XML は混合コンテンツを使用せず、要素を使用して一連のテキスト行 (要素名r ) を段落 (要素名p ) に配置します。その結果、たとえば、人間がテキスト エディタで記述するように設計され、人間が読みやすいようにかなりフラットなHTMLとは対照的に、簡潔で高度にネストされています。
テキスト内の要素と属性の命名規則には批判がある。OOXML (ECMA-376) には、ドキュメントがテキスト、スプレッドシート、プレゼンテーションのいずれであるかに応じて、テキストの色と配置を指定するための 3 つの異なる構文がある。Rob Weir ( IBM社員でOASIS OpenDocument Format TCの共同議長) は、「このひどい仕様の技術的な正当性は何なのか?」と問いかけている。彼はOpenDocumentと対比して、「ODF はテキストのスタイル設定に W3C の XSL-FO 語彙を使用し、この語彙を一貫して使用している」と述べている。[ 7 ]
設計がマイクロソフトのアプリケーションにあまりにも忠実であると主張する人もいる。2007 年 8 月、Linux Foundation は、OOXML の国際標準化の際に ISO 各国機関に「コメント付きで反対」に投票するよう求めるブログ記事を公開した。記事には、「OOXML は、単一ベンダーのバイナリ文書フォーマットを直接移植したものです。関連する既存の国際標準 (いくつかの暗号化アルゴリズム、VML など) の再利用を避けています。プラットフォーム固有の機能に関連付けられたバイナリコードの継続的な使用、MS-Office のバグの標準への伝播、独自の単位、独自の/機密タグへの参照、不明確な IPおよび特許権など、OOXML を標準化する前に対処すべき技術的な欠陥が文字通り 数百あります」と書かれている。[ 8 ]
JTC 1に提出された標準規格のバージョンは6546 ページでした。このような長さの必要性と適切性については疑問が呈されています。[ 9 ] [ 10 ] Google は、「同じ目標を達成する ODF 標準はわずか 867 ページである」と述べています。[ 9 ]
wml.xsdワードプロセッシング文書は、標準に付属するスキーマによって規範的に定義された、WordprocessingML と呼ばれる XML 語彙を使用します。この語彙は、パート 1 の条項 11 で定義されています。 [ 11 ]
sml.xsdスプレッドシート文書は、標準に付属するスキーマによって規範的に定義されたSpreadsheetMLとして知られるXML語彙を使用します。この語彙は、パート1の条項12で説明されています。 [ 11 ]
スプレッドシート内の各ワークシートは、名前空間で指定されたルート要素を持つ XML ドキュメントによって表されます。<worksheet>...</worksheet>http://schemas.openxmlformats.org/spreadsheetml/2006/main
SpreadsheetML における日付と時刻の値の表現は、いくつかの批判を受けています。 ECMA-376 第 1 版は、ISO 8601:2004「日付と時刻の表現」に準拠していません。実装では、1900 年を閏年として誤って扱うLotus 1-2-3 [ 12 ]のバグを再現する必要があります。 ECMA-376 に準拠する製品は、スプレッドシートの WEEKDAY() 関数を使用する必要があり、そのため、週の一部の曜日に誤った日付が割り当てられ、特定の日付間の日数も誤って計算されます。 [ 13 ] ECMA-376 第 2 版 (ISO/IEC 29500) では、Lotus 1-2-3 のバグと互換性のある形式に加えて、8601:2004「日付と時刻の表現」の使用が許可されています。[ 14 ] [ 15 ]
Office Math Markup Language は、WordprocessingML に埋め込むことができる数学マークアップ言語で、改訂マークアップ[ 16 ]、脚注、コメント、画像、複雑な書式設定やスタイル[ 17 ]などのワードプロセッシングマークアップを含めるための固有のサポートがあります。OMML 形式は、これらのオフィス機能をサポートしていないWorld Wide Web Consortium (W3C) MathML勧告とは異なりますが、 XSL 変換を介して部分的に互換性があります[ 18 ] 。ツールはオフィス スイートに付属しており、クリップボード変換を介して自動的に使用されます[ 19 ]。
次の Office MathML の例では、分数を定義します。
<m:oMathPara> <!-- 段落として使用される数式ブロックコンテナ --> <m:oMath> <!-- インライン数式 --> <m:f> <!-- 分数 --> <m:num><m:r><m:t> π </m:t></m:r></m:num> <!-- 単一のテキストを含む分子 --> <m:den><m:r><m:t> 2 </m:t></m:r></m:den> <!-- 単一のテキストを含む分母 --> </m:f> </m:oMath> </m:oMathPara>Office MathML (OMML) の必要性に疑問を呈し、代わりに「Web ページへの数式の挿入」および「マシン間通信」のためのW3C勧告であるMathMLの使用を提唱する人もいます。 [ 20 ] Murray Sargent は、これらの問題のいくつかにブログ記事で回答しており、2 つのフォーマット間の哲学的な違いを詳しく説明しています。[ 21 ]

DrawingMLは、 Office Open XML文書で使用されるベクターグラフィックマークアップ言語です。主な機能は、テキスト要素、ベクターベースの図形要素、表、グラフなどのグラフィックレンダリングです。
DrawingML テーブルは、Office Open XML の 3 番目のテーブル モデル (WordprocessingML および SpreadsheetML のテーブル モデルに次ぐ) であり、グラフィック エフェクトに最適化されており、主に PresentationML マークアップで作成されたプレゼンテーションで使用されます。DrawingML には、DrawingML で使用されるさまざまなグラフィック要素に適用できるグラフィック エフェクト (影や反射など) が含まれています。DrawingML では、たとえば柔軟なカメラ パースペクティブを通してさまざまなグラフィック要素を表示するなど、3D エフェクトを作成することもできます。Office Open XML パッケージ内に個別の DrawingML テーマ パーツを作成することが可能です。これらのテーマは、Office Open XML パッケージ全体のグラフィック要素に適用できます。[ 22 ]
DrawingMLは、 SVGなどの他のベクターグラフィック形式とは無関係です。これらのベクターグラフィックはDrawingMLに変換することで、Office Open XMLドキュメントにネイティブに組み込むことができます。これは、SVGのサブセットを使用し、ベクターグラフィックを個別のファイルとして含めるOpenDocument形式とは異なるアプローチです。
DrawingML グラフィックの寸法は、英語メートル単位(EMU) で指定されます。これは、元々英語単位またはメートル単位 (1/360,000センチメートルとして定義) で表された寸法を正確に共通表現できるため、このように呼ばれています。したがって、1インチあたり 914,400 EMU、1ポイントあたり 12,700 EMUとなり、計算時の丸め誤差を防ぎます。Rick Jelliffe は、特定の設計基準に対する合理的な解決策として EMU を推奨しています。[ 23 ]
一部の人々は、 W3C勧告SVGの代わりにDrawingML(および移行目的のみのVML )を使用していることを批判している。[ 24 ] VMLはW3C勧告にはならなかった。[ 25 ]
OOXML文書は通常、XMLコンテンツに加えて、他のリソース(画像、動画など)で構成されます。
こうしたリソースに許可されているフォーマットの選択を批判する声もある。ECMA-376第1版では「埋め込みオブジェクト代替イメージ要求タイプ」と「クリップボードフォーマットタイプ」が規定されているが、これらはWindowsメタファイルまたは拡張メタファイル を参照しており、それぞれがWindows自体にハードコードされた依存関係を持つ独自のフォーマットである。批判者たちは、この標準は代わりにプラットフォームに依存しない標準であるISO/IEC 8632「コンピュータグラフィックスメタファイル」を参照すべきだったと主張している。[ 13 ]
この規格では、編集目的でコンテンツ内に外部マークアップを埋め込むための3つの仕組みが規定されています。
これらは第1部第17.5項で定義されています。
Office Open XML の各バージョンには、「互換性設定」と呼ばれるものが含まれています。これらは、ECMA-376 第 1 版のパート 4 (「マークアップ言語リファレンス」) に含まれていますが、標準化の過程で ISO/IEC 29500:2008 (「移行機能」) の新しいパート (こちらもパート 4 と呼ばれます) に移動されました。
これらの設定(autoSpaceLikeWord95、footnoteLayoutLikeWW8、lineWrapLikeWord6、mwSmallCaps、shapeLayoutLikeWW8、suppressTopSpacingWP、truncateFontHeightsLikeWP6、uiCompat97To2003、useWord2002TableStyleRules、useWord97LineBreakRules、wpJustification、wpSpaceWidthなどの名前を持つ要素を含む)は、DIS 29500の標準化中に論争の的となった。[ 26 ]その結果、それらを文書化するためにISO/IEC 29500に新しいテキストが追加された。[ 27 ]
フリーソフトウェアマガジンの記事では、これらの設定に使用されているマークアップが批判されています。Office Open XML では、互換性設定ごとに固有の名前の要素が使用されており、それぞれがスキーマで宣言されています。そのため、設定のレパートリーは限られており、新しい互換性設定を追加するには、新しい要素を宣言する必要があり、「相互運用性とは何の関係もない要素が何千個も作成される可能性がある」のです。[ 28 ]
この規格では、パート3(ISO/IEC 29500-3:2008)で定義されているマークアップ互換性および拡張性(MCE)と、パート1の18.2.10項で定義されている拡張リストという2種類の拡張メカニズムが提供されています。
が6546ページに及ぶOOXMLに他の標準と同じレベルのレビューを与えるとすれば、同じ目的を達成し、したがって良い比較対象となる既存のODF標準(867ページで871日)と同等のレビューレベルに達するには18年(6546ページで6576日)かかることになる。OOXMLは同等の標準が受けたレビューの約5.5%しか受けていないことを考えると、矛盾、不整合、情報不足に関する報告は驚くべきことではない。
「…OOXMLはこの方法を選択しました。アプリケーション定義可能な構成タグを作成するのではなく、各設定に固有のタグがあります…現在、対応しているアプリケーション固有の設定は、標準の作成者が含めることを決定したアプリケーションのみです…他のアプリケーションを追加するには、仕様でさらにタグ名を定義する必要があり、相互運用性とは何の関係もないタグが何千個も作成される可能性があります…」