WordMLToFOスタイルシート V2.1
WordMLToFOスタイルシートとは
WordMLToFOスタイルシートは、マイクロソフト社のOffice2003から採用されたWordの新しい保存フォーマットであるWordMLファイルを入力とし、これからW3C勧告の「Extensible Stylesheet Language(XSL)」に基づいたXSL-FOファイルを生成するXSLTスタイルシートです。 「Extensible Stylesheet Language(XSL)」は、XML文書レイアウトして組版するための仕様です。このWordMLToFOスタイルシートにより、Word文書からXSL-FOを生成して利用することが可能になりました。
WordMLToFOスタイルシートで生成したXSL-FOは、弊社 XSL Formatter V3.2 以上のバージョン で組版し、動作確認しています。他社のXSL-FO組版アプリケーションでの動作は保証されません。
Microsoft WordとXSL-FOでは、文書モデルが根本的に異なるため完全な変換はできません。よって正しく組版できない場合があります。 |
WordMLとは何か
WordMLは、正式には WordProcessing Markup Language と呼ばれます。従来Wordには主な保存形式として、バイナリ(.doc)、リッチテキスト(.rtf)がありました。WordMLはXML形式で、これらの保存形式と同等な新しいフォーマットです。更に、WordMLは次のような特徴を持っています。
- バイナリフォーマットと異なり、仕様が公開されている。
- ユーザのスキーマに基づいたタグを文書中に埋め込むことができる。
- XMLをターゲットとしたアプリケーションからXSLTを利用して簡単にアクセスすることができる。
このような特徴を生かすことにより、次のような応用が可能となります。
- ユーザのXML文書にXSLTを適用して、WordMLを生成する。生成したWordMLはWord2003で読み込むことにより、表示/印刷ができます。
- WordMLからXSLTを利用して任意のXMLを生成する。例えば既存のWord文書をWord2003でWordML化することにより、目的のXML文書を得る。
WordMLToFOスタイルシートは、後者の一つの応用です。WordMLは2003年11月に正式に仕様がマイクロソフト社から公開されました。興味をお持ちの方は以下のURLよりダウンロードが可能です。
Office 2003 XML Reference Schemas には、Overview of WordprocessingML と題されたWordMLの構造の簡単な解説文書が付属しています。
WordMLToFOの機能
WordMLToFOスタイルシートは、次のような機能によりXSL-FOを生成します。
要素のマッピング
WordMLToFOスタイルシートは、次のようなWordMLの要素から対応するXSL-FOの要素を生成します。
文書の要素 | WordMLの要素 | XSL-FOの要素 |
---|---|---|
段落 | w:p | fo:block |
インライン(テキストラン) | w:r | fo:inline |
箇条書き | w:p (w:pPr/w:listPrを持つ段落) | fo:list-block, fo:list-item, fo:list-item-label, fo:list-item-body |
表 | w:tbl, w:tr, w:tc | fo:table, fo:table-row, fo:table-cell |
画像 | w:pict | fo:external-graphic |
スタイルの展開
Word文書はさまざまなスタイルが適用されて文字や段落の表示フォーマットが決定されます。Wordのスタイルの種類には、表スタイル、段落スタイル、文字スタイルなどがあります。これに対してXSL-FOにはスタイルの概念はありません。fo:inlineやfo:blockに適用するプロパティは、スタイルを適用した後の最終結果を指定する必要があります。したがってWordMLToFOスタイルシートは、次のようなWordのスタイルをすべて重ね合わせてその結果をFOに出力します。
文書の要素 | 条件 | 処理するスタイルシート |
---|---|---|
段落 | 表中の段落 | 表スタイル、段落スタイル |
表外の段落 | 段落スタイル | |
インライン(テキストラン) | 表中段落に含まれるインライン | 表スタイル、段落スタイル、文字スタイル |
表外段落に含まれるインライン | 段落スタイル、文字スタイル | |
表の行やセル | - | 表スタイル |
WordMLToFOスタイルシートの動作環境
WordMLToFOスタイルシートは、XSLT 1.0に準拠したスタイルシートです。一部RTF(Result Tree Fragment)に関する拡張機能を使用しています。現在、以下のXSLTスタイルシートプロセッサで動作を確認しています。
XSLT プロセッサ | 備考 |
---|---|
Saxon 6.5.3 | Sun Java SDK, Java 2 Platform, Standard Edition 1.4.1以上で動作確認済。Saxon7での動作は未確認。Instant Saxonでは動作しません。 |
MSXML3, MSXML4 | 一部行レイアウトの計算が簡略化されます。 |
Microsoft .NET Framework 2.0 | |
Microsoft .NET Framework 1.1 |
制限事項
現在のWordMLToFOスタイルシートは次の制限事項があります。
-
WordMLのファイルによっては、正しく組版できない場合があります
Microsoft WordとXSL-FOでは、文書モデルが根本的に異なるため完全な変換はできません。よって正しく組版できない場合があります。
- フィールド
Wordには多くの種類のフィールドがあります。WordMLToFOスタイルシートはフィールドの結果をテキストとして変換します。しかしすべてのフィールドから結果テキストを取得できていません。例えばリストボックス、テキストボックスなどの特殊なフィールドには未対応です。
- タブ
Wordではタブ文字をレイアウトに使用することが多く行われますが、XSL-FOではタブ文字に相当する機能はありません。WordMLToFOスタイルシートは、タブ文字を fo:leader に変換しますが、必ずしも元のレイアウトを完全に再現できません。
- オートシェイプ
Wordで線画を使用する場合にはオートシェイプを使用します。WordMLToFOスタイルシートは、オートシェイプには対応していません。
- 脚注、文末脚注
WordMLToFOスタイルシートは、脚注、文末脚注には対応していません。
- 行の高さ
行の高さを正しく設定することができない場合があります。
- ハイフネーション
WordでHyphnationがonになっている文書中の単語は、WordMLでは
<w:t>Fo</w:t> <w:t>r</w:t> <w:t>matter</w:t>
のように分断されてしまいます。このため、変換されたFOでも分断されたままであるため、ハイフネーションができません。
- シェーディングは変換できません。
- ユーザースキーマのタグが埋め込まれた文書は変換できません。あらかじめ取り除く必要があります。
サンプル
XSLTプロセッサとしてMSXML4を使用して作成したサンプルです。クリックすれば拡大表示されます。(文書内容は架空のものです。)
![]() 元文書のWord表示画面 |
![]() 作成したFOをXSL Formatterで表示 |
サンプルデータは、以下からダウンロードできます。
XSL Formatter V3.2 以上のバージョンには、WordMLToFOスタイルシート(除ソースコード)が内蔵されています。評価版をダウンロードして、ご自身で組版結果を確認してください。
製品構成
WordMLToFOスタイルシートは、2003年12月より販売しております。
名称 | WordMLToFO スタイルシート |
---|---|
価格 | 105,000円(税込) |
内容 | スタイルシートソースファイル、外部Javaライブラリ(.jarファイル)、ユーザーズマニュアル、サンプルデータ |
ライセンス | 本製品は一台のコンピュータにインストールして使用することができます。 本製品を有償、無償を問わず第三者に配布または頒布することはできません。 本製品に含まれるスタイルシートソースファイルは、お客様の責任において自由に改変することができます。 |
本スタイルシートに関心をお持ちになられた企業・開発者の方は、お気軽にメールにてご連絡ください。