XML的思索: OpenOfficeファイル・フォーマット

フロント・オフィス文書用のXMLフォーマット

OpenOffice.orgは、オープン・ソースの成熟したフロント・オフィス・アプリケーション・スイートであり、オープンXML DTDの保管ファイル・フォーマットの利点を備えています。そのため、ユーザーおよび開発者は、OpenOffice.orgで作成された作業を処理する際にきわめて柔軟で強力な機能を利用することができます。今回の記事でUche Ogbuji氏は、OpenOfficeファイル・フォーマットを紹介し、その利点を説明します。

Uche Ogbuji, Principal Consultant, Fourthought, Inc.

Photo of Uche OgbujiUche Ogbuji は、次世代の Web 技術を専門とするサービスの会社である、Uli, LLC の代表者です。Ogbuji 氏は XML、RDF、およびナレッジ管理アプリケーション用のオープン・ソース・プラットフォームである 4Suite の開発リーダーであり、Versa RDF 照会言語の開発リーダーでもあります。ナイジェリア出身のコンピューター・エンジニア兼ライターで、米国コロラド州ボールダー在住です。彼に関して詳しくは、彼のブログである Copia を見てください。



2003年 1月 01日

マークアップの支持者たちは、XMLなどの革新的な技術の価値を人々に納得させようとするときに、必ずと言っていいほど、プロプラエタリーなバイナリー・ファイル・フォーマットの例を挙げます(最も一般的に引き合いに出される厄介者は、保管済みのワード・プロセッサー・ファイルです)。XMLファイル・フォーマットの先輩格の技術として、しばしば、コンマで区切られるファイル・フォーマットが論じられます。このフォーマットは、スプレッドシートおよびデータベースのインポートとエクスポートに非常に多く使用されます。フロント・オフィス・ツールまたは単にオフィス・ツールと呼ばれるツール (ワード・プロセッサー、スプレッドシート、プレゼンテーション・ソフトウェア、コンタクト・マネージャーなど) は、ユーザーの知識を反映する膨大な量のデータを保持します。ユーザーの覚え書き、メモ、提案、分析、計画、および組織ツールは、知識管理の第一線にあります。このようなソフトウェアをアップグレードまたはマイグレーションする場合に大きな問題となるのは、新しいシステムが古いファイルをインポートできるのかどうか、ということです。バックアップを行うときには、通常、これらのオフィス・ファイルから始めます。

ベンダーはこのことを知っていますので、プロプラエタリーなファイル・フォーマットの重要性を高めて、ユーザーが、そのフォーマットに忠実に従うようにする一方で、ツールの柔軟性を向上させて競合他社のファイルを受け入れるようにすることの意味合いを理解しています。しかしマークアップの支持者、特にXMLの支持者は、こうした、一見したところ好意的な囲い込みに服従する必要はないと述べています。「なぜこのような重大なデータを100%自分で制御できないのか?」さらに、こう述べています。「なぜ、任意のテキスト・ビューアーで簡単にファイルを開き、少しでも内容を理解する機会を得ることができないのか?」XMLはこのソリューションとして提供されたものです。XMLは単なるプレーン・テキストではなく、さまざまなXMLフォーマットの間で変換を行うことを可能にするツールキットを備えています。XMLは、透過性とインターオペラビリティーを支援する道具として提供されています。

人々の期待どおりに、XML出力を提供するオフィス・ツールは、その数を増しつつあります。最近Microsoftは、同社のオフィス・スイートの最新バージョンで、XMLの統合およびエクスポート機能に関して派手な宣伝を展開しました。OpenOffice.orgプロジェクトは、StarOfficeから派生したオープン・ソースの完全なオフィス・スイートを作成するプロジェクトであり、XMLを別個のエクスポート・オプションとしてではなく、中核的なファイル・フォーマットとして使用しています。OpenOfficeには、ワード・プロセッサー、スプレッドシート、プレゼンテーション・ツール、およびグラフィックス/ダイアグラム作成ツールが含まれています。長期間をかけて (開始されたのは1994年ごろです) 磨きがかけられ、オフィス・スイートに期待される機能を獲得しました。

OpenOffice.orgの出資者 (OpenOffice.org Webサイトの貢献者およびユーザー) は、オフィス・ファイル・フォーマット間でのインターオペラビリティーと柔軟性を大幅に高めることを望んで、すべて、そのファイル・フォーマットをできるかぎりオープンで一般的なものにすることに決めました。彼らはこの目標を実現するために、Organization for the Advancement of Structured Information Standards (OASIS) の新規技術委員会 (TC) にファイル・フォーマットを寄贈しました。私はこの委員会の創設メンバーであり、OpenOfficeフォーマットが、私たちの仕事やコミュニケーションにおいて使用される人間の眼で読める文書を、一種のメタデータ管理に結び付けることにより、これらの文書の集合的価値を高めていくと考えています。この記事では、OpenOfficeのファイル・フォーマットを紹介します。

ここで、XMLとオフィス・ソフトウェアの交流にとって興味深い話をしましょう。最近のMicrosoft XDocsテクノロジーについて、また、それがXForms、OpenOfficeフォーマット、およびその他の類似プロジェクトと競合できるのかどうか、あるいはそれらを補完し得るのかどうかについて、多くの議論が行われてきました。この記事では、そうした関係に関しては扱いません。これは、スペースの余裕がないためということもありますが、XDocsの詳細がまだ完全に明らかになっていないという理由にもよります。また、この記事のこれ以降の部分では、完全な公式名称である「OpenOffice.org」ではなく、「OpenOffice」という名称を使用します。

全体的なフォーマット

私はOpenOffice 1.0.1 for Linux (これは、Red Hat 8.0に同梱されていたものを運良く見つけたものです) を始動させ、図1 に示す文書を作成しました。

図1. OpenOfficeワード・プロセッサー・セッション
図1. OpenOfficeワード・プロセッサー・セッション

これを見てお分かりのように、編集インターフェースは他の多くのWYSIWYGワード・プロセッサー画面と非常に良く似ています (OpenOfficeのユーザー・インターフェースについては、この記事では扱いません)。私はこのファイルをdocument.sxw として保管しました。OpenOfficeネイティブ・フォーマットで保管されるすべてのファイルと同じように、このファイルは実際には、XMLファイルとその他のサポート・ファイルのセットを含むZIPファイルです (このバンドル方式は、OpenOfficeパッケージ・フォーマットと呼ばれています)。複数の関連するXML文書とサポート・ファイルをパッケージ化するためのアーカイブ・ファイル規則に基づいて標準化するという考え方は、一般的な常とう手段です。例えば、XMLのエキスパートであるRick Jelliffe氏は、ZIPに基づくXML Application Archive (XAR) フォーマットを開発しましたし、また、Direct Internet Message Encapsulation (DIME) もあります (これはInternet Draftの一種ですが、一般的なアーカイブではなくメッセージ送信やWebサービスで使用することを想定した、より複雑なものです)。OpenOfficeは独自のフォーマットを使用しています。次に、これについて検討することにします。これらのフォーマットの詳細については、参考文献を参照してください。

document.sxw のZIP内容は以下のとおりです。

$ unzip -v document.sxw
Archive:  document.sxw
 Length   Method    Size  Ratio   Date   Time   CRC-32    Name
--------  ------  ------- -----   ----   ----   ------    ----
    2946  Defl:N      965  67%  12-13-02 04:03  44fee85c  content.xml
    4638  Defl:N     1199  74%  12-13-02 04:03  791e906a  styles.xml
    1120  Stored     1120   0%  12-13-02 04:03  a921529c  meta.xml
    6183  Defl:N     1362  78%  12-13-02 04:03  c8586553  settings.xml
     752  Defl:N      254  66%  12-13-02 04:03  11144701  META-INF/manifest.xml
--------          -------  ---                            -------
   15639             4900  69%                            5 files

最初の停車駅はMETA-INF/manifest.xml です。これは、パッケージ内の他のすべてのファイルの中央ディレクトリーのようなものです。リスト1 は、私のサンプル文書に含まれるマニフェスト・ファイルです。

リスト1: 図1に示した保管済みサンプル文書のマニフェスト
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE manifest:manifest PUBLIC "-//OpenOffice.org//DTD Manifest 1.0//EN" "Manifest.dtd">
<manifest:manifest xmlns:manifest="http://openoffice.org/2001/manifest">
 <manifest:file-entry manifest:media-type="application/vnd.sun.xml.writer"
       manifest:full-path="/"/>
 <manifest:file-entry manifest:media-type="" manifest:full-path="Pictures/"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="content.xml"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="styles.xml"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="meta.xml"/>
 <manifest:file-entry manifest:media-type="text/xml" manifest:full-path="settings.xml"/>
</manifest:manifest>

すべてのOpenOfficeフォーマットはDTDを使用します。文法を用意しておけば、フォーマットのインターオペラビリティーが向上しますし、W3CスキーマでなくDTDを選択することにより、より幅広いXMLツールを使うことができるため、これは良いことであると思います。これらのファイルを一般的なXMLツールで処理するには、公開IDを解決するためのカタログを使用するか、システムIDとして指定されたManifest.dtdファイルを同じディレクトリーにコピーするか、あるいは、外部DTDサブセットを読み取らないツールを使用するようにしてください。OpenOfficeは、必要なDTDおよびエンティティーの内部カタログを維持します。OpenOfficeのDTDは、ユーザーのマシンにインストールされたOpenOfficeの共用ディレクトリーに入っています。例えば、私のマシンにインストールされているRed Hat 8.0では、OpenOfficeのDTDは/usr/lib/openoffice/share/dtd/ に入っており、マニフェストDTDは/usr/lib/openoffice/share/dtd/officedocument/1_0/ です。また、OpenOfficeのWebサイトからDTDをダウンロードしたり、オンラインでDTDにアクセスしたりすることもできます (参考文献を参照してください)。マニフェスト・ファイルは、共通のOpenOfficeネーム・スペースを使用し、その大半は、各ファイルのインターネット・メディア・タイプ (IMT) と関連URLを指定する項目要素のリストからなります。サブフォルダーのmedia-type 属性は、(例えば、Picturesフォルダーのmedia-type 属性のように) 空のままです。このフォルダーは、私の例では空ですが、通常は組み込まれた画像のグラフィック・ソース・ファイルが含まれています。

meta.xml には、一連の要素と文書メタデータ (作成日付と最新の編集日付、文書の編集に要した合計時間、ワード数、ページ数、表の数、画像の数など) が含まれます。styles.xml は、XMLフォーマットのcascading style sheet (CSS) とXSL-Formatting Objects (XSL-FO) を折衷させたものと考えることができます。これは、文書の編集セッションで使用可能な、フォント、ピッチ、装飾、スペーシング、タブ停止位置などの、さまざまなスタイルを定義します。このファイルはすべてのスタイルに名前を付けて、他のファイルで参照できるようにします。settings.xml は、OpenOfficeユーザー・インターフェースのユーザー設定を記録します。これらのユーザー設定は、文書そのものの詳細ではなく、文書の編集に使用されるアプリケーションの詳細を設定するものです。インターオペラビリティーを保証するためには、この部分の完成度をさらに向上させる必要があります。つまり、複数のアプリケーション (これらすべてがOpenOfficeフォーマットを使用します) で同一の文書が編集される場合、それぞれのアプリケーションで同じような設定が維持されることは期待できません。また、たとえ同一設定が維持されるとしても、設定の衝突を防ぐ工夫が必要です。


内容の操作

この文書の心臓部である実際の内容は、content.xml に入っています。残念なことに、このファイルは、さまざまな要素が入り乱れているために、テキスト・エディターで気軽に表示することはできません。しかし、ヌル・スタイル・シート (リスト2 を参照) のおかげで、XSLTなどの多くの一般的なXMLツールを使用して文字データを取り出すことができます。

リスト2: XSLTのヌル・スタイル・シート
<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="1.0"
>
  <xsl:output method="text"/>
</xsl:stylesheet>

ヌル・スタイル・シートは、「すべてデフォルト」というテンプレート規則を使用します。これにより、どのXMLファイルからもマークアップがすべて除去されます。私は、XMLテキスト宣言が出力されないようにするために、テキスト出力方式を指定しています。次のスクリプトは、どのようなXSLTプロセッサーでも使用することができます。

$ 4xslt content.xml null.xslt

これにより、次の出力が得られます。

This new column, Thinking XML, will cover the intersection of XML andknowledge architecture (KA). Knowledge architecture sounds likesomething tossed out by a jargon bot, but it's really just an umbrella termfor some very useful technologies that are emerging now that XML is enteringits adolescence. Metadata management, semantic transparency, and autonomousagents are hardly concepts unique to XML,but the promise of XML to unifythe syntax of structured and semistructured data helps turn the next-to-impossibleinto the feasible.

スペースが欠落していることに注意してください。OpenOfficeは、ユーザーの編集パターンに応じた文書のマーキング・スタイルに関しては、かなりえり好みが激しいアプリケーションです。以下のコードには、多くのマーキングが使用されています。

<text:s/><text:span text:style-name="T2">Knowledge architecture</text:span> sounds 
like</text:p><text:p text:style-name="Standard">something tossed out by a jargon bot, 
but it&apos;s really just an umbrella term</text:p>

(上のコード・サンプルでは、見やすくするために、コードがワードごとに区切られ、複数の行で示されています。実際には、コードは単一の長い行になっています。)

テキストは複数の要素に分断され、必要に応じてOpenOfficeがスペースを挿入します。XSLTプロセッサーは、上記の出力に見られるような効果を持つ、こうした補正を行いません。簡単なXSLTテンプレートを使用して要素間にスペースを挿入することにより、同じことを行うことができます。しかしここで重要なことは、一般的なツールを使用してこのファイル・フォーマットを非常に効率良く処理できるということです。


結論

このコラムでは、OpenOfficeテキスト・ファイル・フォーマットの概略を示しましたが、このプロジェクトは単にテキスト・フォーマットを発表して、そのままにしているわけではありません。OpenOfficeはXMLツールを統合するための豊富な機能を持つツールキットを備えており、また、サード・パーティー製のツールも増えつつあります。これには、SAXフィルター、XSLTプラグイン、および低レベルのJava APIなどが含まれます。コミュニティーの開発者たちは、Docbook、HTML、TeX、プレーン・テキスト、およびPalmOSとPocketPCで使用される文書フォーマットをロードおよび保管するOpenOfficeの能力を強化するために、すでにこれらの機能を使用しています。

XMerge は、PDAや携帯電話などの小型装置でOpenOfficeコンテンツを操作するためのプロジェクトです。XMergeの作業は、驚くべきペースで進行中であり、Nokiaなどのベンダーはプロジェクトに参加する意向を示しています。これは、OpenOfficeが採用しているオープン性によって得られる、もう1つの著しい利点を示すものです。これにより、プロプラエタリーなフォーマットを使用する場合に比べて、このオープン性が公平な競争の場に何をもたらすのかを理解した、(商業の利益を含む) 広範な分野からの貢献が促進されます。XMergeは、文書変換にXSLTプラグインを使用します。これにより、クロスプラットフォーム・サポートも保証されます。

私たちは、Open Office XML Format TC (つづりの違いに注意してください) で、インターオペラビリティーをさらに向上させるために厳しい目を注ぎ、これらのファイル・フォーマットの改善を続ける予定です。これは、オープンなメーリング・リストを使用したオープン・プロセスであり、OASISメンバーであれば誰でも正式に加入することができます。フロント・オフィス文書の管理に興味のある方や、身の回りにあるツールを使用してOpenOfficeファイルをいじってみて楽しみたいという方は、ぜひ参加してください。結局のところ、このプロジェクトもXMLなのです。

参考文献

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=XML
ArticleID=241768
ArticleTitle=XML的思索: OpenOfficeファイル・フォーマット
publish-date=01012003