XSL-FOを使って文書を印刷用に加工する

XMLを使って移植性の高いデータベース・レポートを生成する (続編)

移植性の高さを売り物にしているXML文書は、ほとんどの場合、表示情報を内部に組み込むということをしません。しかしそうはいっても、XML文書の移植性の高さを維持しながらも、表示情報を内部に組み込んでしまいたいと思うことはないでしょうか。この記事で取り上げるXSL-FO (XML Stylesheet Language-Formatting Objects) には、そんなニーズにぴったりの機能が用意されています。この記事では、JavaとXMLのコードを使ったデータベース・レポート生成システムの実装例も取り上げていますので、その実装例からも、XSL-FOを活用した場合の利点をはっきりご理解いただけると思います。

Rodolfo Raya, Consultant, developer, co-owner, Maxprograms

Photo of Rodolfo RayaRodolfo M.RayaはMaxprogramsでコンサルタント/開発者/共同オーナーとして働いており、一週間に8日をつめこむ魔法の公式を見つけようとしています。彼は13年間、C/C++ のプログラミングをやってきましたが、何故今になってJava、XML、その他の理解して消化するのに時間のかかる新しいテクノロジーに取り組んでいるのかは、だれも知りません。この記事は、夜の安眠をもう一つの難しいタスクにしている彼の小さな赤ちゃん、Martinにささげられています。



2001年 11月 01日

XML Stylesheet Language-Formatting Objects (XSL-FO) は、XML文書を印刷用に加工する必要がある場合にぴったりのツールです。この記事では、なぜそう言えるのかを説明するとともに、状況によっては、XML文書の内部に書式設定情報を組み込むほうが有利だということを取り上げてみたいと思います。しばらく前に、筆者はこのdeveloperWorksで、JavaとXMLによるポータブル・データベース・レポート作成という記事を書き、JavaとXMLを使ったデータベース・レポートの生成処理を取り上げたわけですが、今回の記事はその続編ということになります。

Formatting Objectsの基礎知識

XMLは、さまざまなアプリケーションの間でデータをやり取りするための移植性の高い手段として開発されたものであり、データの表示方法は、基本的にアプリケーションの側に任されています。XML文書で使われる書式設定といえば、インデントが唯一のものであり、データはとにかくきっちりと記述されていきます。ここでは、文書の外観を加工するという用途に特化したXMLボキャブラリー、つまりXSL-FOの基本的な使い方と、XSL-FOを使うときに役立つヒントをいくらか示しましょう。

FOの定義とXSLにおける役割

ご存じの方も多いでしょうが、XSLとはExtensible Stylesheet Languageの略称です。W3Cのワーキング・グループは、この言語の構成要素を明確に定義しています。要するに、XSLには次のような2つの要素があるわけです。

  • XML文書を変換するための言語
  • 書式の意味を規定するXMLボキャブラリー

このうち、XSLの最初の構成要素はXSL Transformations (XSLT) と呼ばれていますが、今回取り上げているXSL-FO (略してFormatting Objects: FO) は、この2番目の構成要素になっています。

XSLTは、タグの付いたXML文書のデータをきれいで読みやすい書式に変換するための仕様であり、この文書変換は基本的に、XSLTプロセッサーがスタイルシートに定義されているルールを適用することによって処理されます。したがって、この場合は、プロセッサーのほかに、ソースとしてのXML文書が1つ、書式設定情報を記述した文書 (スタイルシート) が1つ必要です。ところが、『XMLを使いたいのはやまやまだが、2つの文書を処理するのは面倒だ』という場合もあるかもしれません。そんな状況をきれいに解決してくれるのが、文書の内部に書式設定情報を組み込んでしまうという方法です。

実は、文書の内部に書式設定情報を組み込むための仕様 ― それがFOなのです。FOはXSLTほどポピュラーではありませんが、重要性の点では引けをとりません。XSL-FOには、文書の表示方法を定義するためのタグ・セットが用意されています。ページ・レイアウト、フォント・スタイル、色、画像の取り込みなど、FOで設定できるデザイン・プロパティーは多彩です。

XSL-FOの仕様書は400ページ以上に及びます (参考文献を参照)。時間を割いてそれだけの資料を読んでみれば、W3Cのワーキング・グループが定義した書式設定オブジェクトの数の多さにびっくりするかもしれません。要するに、FOは印刷用の文書だけを対象にしているわけではなく、マルチメディア文書にも守備範囲を広げているのです。400ページも読めないという人がいれば、Elliote Rusty Harold氏による62ページの見事な要約に目を通してみるのはいかがでしょうか (参考文献を参照)。

XSLの仕様書では、FO文書の妥当性検証に使えるような公式のDTD (文書型定義) がなぜか用意されていませんが、心配には及びません。FO文書の妥当性検証用の試験的なFO DTDがRenderXから公開されています。

ここまで読み進んでくると、読者の頭の中には2つの難問が持ち上がっているかもしれません。つまり、1) XSL-FOを使うべき状況とはどんな状況か、2) またなぜか、という問題です。ここからいくつかの可能性を探ってみましょう。

FOの用途

まず手始めに、ここでXML文書を2つのカテゴリーに分類しておきます。

  • アプリケーション間の情報のやり取りだけに使われる純然たるデータ用文書
  • 人間が読むことになる文書

この最初のカテゴリーについて言えば、アプリケーション間のデータのやり取りだけに使われるXML文書は、基本的に書式設定情報をまったく必要としません。要するに、コンピューター・プログラムは、どんなデータを処理するにしても、データの見栄えなどを気にしないわけです。場合によっては、文書の内部に組み込まれているインデントさえも不要になります。

2番目のカテゴリーに属する文書の場合は、基本的にスタイルシートで変換処理が行われてから、人間のユーザーに対して表示されることになります。この場合、スタイルシートが同じであれば、どんな文書もだいたい同じような見栄えになります。ところが、同じような種類の文書に対して別々の表示書式を設定したい場合には、スタイルシートを一律に適用したくはありません。そこで威力を発揮するのがFOの仕様です。FOを特殊なXMLボキャブラリーとして使って、そのような文書の内部に設定情報を組み込んでしまうわけです。

ワープロ・ソフトとXML

ワープロ・ソフトの場合も、XML形式で文書を保存できれば、移植性と互換性が飛躍的に高まります。

たとえば、Abiwordというオープン・ソースの手軽で快適なワープロ・ソフトは、テキスト文書をXML形式で保存できるようになっています。XSL-FOやDocBookの形式からテキスト文書をインポートしたり、テキスト文書をXSL-FOやDocBookの形式でエクスポートしたりする機能もあります。さらには、Abiwordの独自形式の文書をDocBookやXSL-FOの形式に変換したり、その逆の変換をしたりすることも可能です。したがって、このような機能を活用すれば、1つの文書ソースから何種類かの出力を得ることができますし、さらに外部プログラムをうまく利用すれば、処理できる形式の範囲はどんどん広がっていくわけです。

XML形式で文書を保存できるワープロ・ソフトとしては、ほかにもStarWriterがあります (StarOfficeとOpenOfficeに組み込まれています)。このワープロ・ソフトの専用DTDは、OpenOfficeのWebサイトからダウンロードできます (参考文献を参照)。

もちろん、書式設定という点では、いろいろなワープロ・ソフトが出回っているので、そのようなワープロ・ソフトを使って書式設定をしながら文書を作っていくこともできます。しかし、ここで忘れてはならないのは、ワープロ・ソフトの場合、それぞれのベンダーの独自書式で文書が保存されるという点です。たとえば、WindowsシステムでMicrosoft Wordを使って文書を作ったとしましょう。その文書をLinuxシステムのStarOfficeで開いてみると、必ず元の書式とは違った書式で表示されます。ところが、FOを使って書式設定したXML文書という形でその文書を保存した場合は、どんなアプリケーションで開いても、同じ書式設定情報が適用されるはずです。つまり、FOを活用することの利点は、どんなプラットフォームやアプリケーションを使う場合であっても、同じ書式設定情報が文書に適用されるという点にあるわけです。

もちろん、ワープロ・ソフトが文書をXML形式で保存する場合に、FOの書式設定情報を使うというのは優れた選択肢ではありますが、それが唯一の選択肢だというわけではありません。たとえば、文書作成用の標準としてOASISが強く推奨しているDTDはDocBookです。筆者自身もこのDocBookを何度か活用したことがあり、いろいろな変換がスムーズにできるので、たいへん満足しています。(参考文献には、OASISのWebサイトのリンクがあります。)筆者がこのDocBookを使って書いた技術資料を読んだ人たちは、元々XMLで書かれた資料だということにまったく気づきませんでした。作業手順としては、まずNorman Walsh氏が作成したスタイルシートを使ってFOファイルを作成し、そのFOファイルをFop (ApacheのFOプロセッサー) で普通のPDFファイルに変換し、そのPDFファイルを印刷して小冊子として提供したわけです。

さて、ここから話を進める前に、1つだけ断りを入れておきましょう。確かに、XML文書の内部に書式設定情報を組み込んでしまうというのは、XMLの大前提に反するという主張もあります。もちろん、その主張にも一理あります。XMLは元々、書式設定にとらわれずにデータをやり取りするためのメカニズムとして開発されたわけですから。しかし、たとえそうではあっても、すでに述べたとおり、FOはXSLという別のテクノロジーに属するものであって、たまたまXML形式を採用しているにすぎません。このようにいろいろな方式を組み合わせて使うことに筆者自身は何のわだかまりもありません。要するに、XSL-FOは、レイアウトを記述する用途に特化した特殊なボキャブラリーであって、それ以上でもそれ以下でもないのです。


FOの実例

ここでは、シンプルなFO文書の作り方を説明しますが、XSL-FOを完全にマスターするためには、この仕様で規定されている56種類のオブジェクトの使い方をすべて習得する必要があります。(参考文献に挙げられているXML Bible の18章にリンクしてみてください。)

FO文書の作り方

developerWorksの以前の記事では、データベースに格納されているデータから印刷用のレポートを生成するための手順を取り上げましたが、今回は、複雑なスタイルシートを作成する代わりに、XSL-FOを使用する方法について説明します。

以前の記事では、印刷用のレポートを生成することが目標でした。その目標は、Fopを使ってPDF文書を生成することによって達成できました。PDF文書であれば、画面上で見ても読みやすく、印刷にも適しています。さらに、XML文書の中で指定した書式設定もそのまま保持されます。

図1は、元のレポート生成システム図の修正版です。

図1. レポート生成システム図
図1

この図にあるoutput.fo の部分について言えば、以前の記事では、中間的なXML文書をスタイルシートでFO形式に変換してから、Fopで処理することになっていました。ところが、今になってみれば、その手順はちょっとした遠回りになっています。というのも、その中間的なXML文書のヘッダーについて説明した部分で紹介していたのはこのコードですが、このコードを少し修正するだけで、FOを使った文書のヘッダーをじかに書き込むことができるのです。

Code to write the header of a document that uses FO
System.out.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
System.out.println("<report xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">");

要するに、FO文書には、先頭に必ずルート要素としてfo:root を指定するので、次のようなヘッダーを書き込むようにすればよいわけです。

<?xml version="1.0" encoding="utf-8"?>
	<fo:root>

FOファイルは、次のような要素で構成されています。

  1. XMLヘッダーと名前空間の宣言
  2. ページ・レイアウトの情報
  3. ページのヘッダー / フッターの内容
  4. 本文の内容
  5. 終了タグ (お忘れなく !)

中間的な文書を変換するためのXSLスタイルシートを作成する作業には、確かに切りがありません。以前の記事で紹介したMXReportsについても、改善の余地はかなりあるわけで、実際に改善していくとすれば、プログラムにもスタイルシートにもさらに多くの変更を加えなければならないはずです。そのようなわけで、今後は、Fopを使って中間的なFO文書を変換するという方法になるべく限定したいと思っています。

ヘッダーの記述についてはすでに取り上げたとおりなので、次にページ・レイアウトをどう記述するかという問題に移りましょう。以前の記事で紹介したサンプル・プログラムでは、report.xmlから次のようなデータを取り出す方法を示しました。

  • pageHeight
  • pageWidth
  • headerHeight
  • footerHeight

これらの変数をコードの中で使い、Fopに対して文書のページ・レイアウトを指定した例がリスト1 です。

リスト 1. Describing the desired page layout for the FO processor
try {
   output.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
   output.write("<fo:root xmlns:fo=\"http://www.w3.org/1999/XSL/Format\">\n");
   output.write("  <fo:layout-master-set>\n");
   output.write("    <fo:simple-page-master master-name=\"sample\" \n");
   output.write("             page-height=\"" + pageHeight + "mm\"\n");
   output.write("             page-width=\"" + pageWidth + "mm\"\n");
   output.write("             margin-left=\"25mm\"\n");
   output.write("             margin-right=\"25mm\"\n");
   output.write("             margin-top=\"" + headerHeight + "mm\"\n");
   output.write("             margin-bottom=\"" + footerHeight + "mm\">\n");
   output.write("      <fo:region-body margin-top=\"0mm\"\n"); 
   output.write("             margin-bottom=\"0mm\" />\n"); 
   output.write("      <fo:region-before extent=\"3cm\" />\n"); 
   output.write("      <fo:region-after extent=\"1.5cm\" />\n"); 
   output.write("    </fo:simple-page-master>\n");
   output.write("  </fo:layout-master-set>\n");
   output.write("  <fo:page-sequence master-name=\"sample\">\n");
   output.write("    <fo:flow flow-name=\"xsl-region-body\">\n");
} catch ( java.io.IOException ioe ) {
   System.out.println("Error writing to output file.");
   System.exit( -1 );
}

リスト1を実行すると、リスト2のような出力が得られます。

リスト2. リスト1の実行によって得られる出力
<?xml version="1.0" encoding="utf-8"?>
<fo:root>
<fo:layout-master-set>
          <fo:simple-page-master master-name="sample"
                    page-height="297mm"
                    page-width="210mm"
                    margin-left="25mm"
                    margin-right="25mm"
                    margin-top="27mm"
                    margin-bottom="20mm">
                    <fo:region-body margin-top="0mm"
                              margin-bottom="0mm" />
                    <fo:region-before extent="3cm">
                    <fo:region-after extent="1.5cm" />
          </fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-name="sample">
...

リスト2の記述を分かりやすく説明しましょう。まず、ページ・サイズは標準のA4サイズ (210mm x 297mm) で、余白はXMLレポート定義から抽出されたデータによって設定されます。さらに、ページには5つの区画または領域 があります。つまり、region-body、region-before、region-after、region-start、region-endの5つです。図2 は、ページ内の各領域の配置を示したものです。

図2. ページ・レイアウトと領域の配置
図2

この記事に付属しているzipファイル (参考文献を参照) を解凍すると、サンプル・コード全体を記述したmxreports.javaを取り出せます。サンプル・コードをダウンロードして、writeHeader() メソッドとwriteDetails() メソッドに注目してみてください。

writeHeader() の部分を見れば、ページ・レイアウトを記述し、ヘッダーとフッターの内容を静的オブジェクトとして定義する方法を理解できると思います。

さらに、writeDetails() メソッドでは、レポートの内容をHTMLのテーブルのようなスタイルで定義しています。このアプリケーションでテーブルを使ったのは、詳細域 (DetailBand) の中で、データ・セット内の各行ごとに出力するべき要素の数が決まっているからです。要するに、このレポートでは、データ・セット内のレコードと同じ数の行と、詳細域内の要素と同じ数の列でテーブルを作成すればよいわけです。ただし、通常のFOファイルは、基本的にブロックとインライン・オブジェクトで構成されているので、その点はきちんと押さえておいてください。

リスト3 のサンプルは、FOを使って2つの列を持ったテーブルを定義する方法を示したものです。

リスト 3. Using FO to define a table with two columns
<fo:table>
  <fo:table-column column-width = "90mm" />
  <fo:table-column column-width = "90mm" />
  <fo:table-body>
    <fo:table-row>
      <fo:table-cell>
        <fo:block font-family="Arial" font-style="Regular">Australia</fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block font-family="Arial" font-style="Regular">ADollar</fo:block>
      </fo:table-cell>
    </fo:table-row>
    <fo:table-row>
      <fo:table-cell>
        <fo:block font-family="Arial" font-style="Regular">Austria</fo:block>
      </fo:table-cell>
      <fo:table-cell>
        <fo:block font-family="Arial" font-style="Regular"\>Schilling</fo:block>
      </fo:table-cell>
    </fo:table-row>
  </fo:table-body>
</fo:table>
注: この記事の説明に合わせてFopを使う場合は、列の幅を明示的に指定する必要があります。

HTMLでテーブルを作成したことのある人であれば、テーブル・オブジェクトの基本はすぐに理解できると思います。リスト3をご覧ください。

表1. FOとHTMLのテーブル用タグの比較
FOタグ HTMLタグ
fo:table-bodytable
fo:table-rowtr
fo:table-celltd

FOファイルを印刷用文書に変換する方法

この時点で、FOファイルの概要や生成方法については少なくとも理解していただけたと思います。次の段階は、FOファイルからタグを取り除いて、読みやすい形式に加工するという処理でしょう。

現時点で、XSL-FOファイルを加工するためのツールはごく限られていますが、FOファイルの変換先の形式としては、次の3つが最適です。

  • Portable Document Format (PDF)
  • リッチ・テキスト形式 (RTF)
  • Webページ (HTML)

PDFファイルを生成する場合は、Apache XMLプロジェクトで開発されたオープン・ソース・ツールであるFopか、RenderXの商用製品であるXEPのいずれかを使用できます (参考文献を参照)。

FOからRTFへの変換はどうかと言えば、筆者はたまたまFop関連のニュースグループを閲覧していたときに、Bertrand Delacretaz氏が開発したStandaloneConverterという試験的なスタンドアロン変換プログラムを見つけました。このプログラムをコンパイルして実行してみたところ、currency.foファイルからRTFを生成できました。このRTFも、先ほど述べたzipファイルに含まれています。確かに、このツールで生成したRTFファイルでは、currency.foで指定した余白が消えていますが、編集可能な形式の文書を生成するためにこのツールが役立つのは間違いありません。

この記事ですでに述べたとおり、FOファイルは正規のXMLファイルなので、FOからHTMLへの変換には、XalanなどのXSLTツールを使えばよいわけです。Doug Tidwell氏の Transforming XML documents というチュートリアルでは、FOからHTMLへの変換を実際に体験できます。


FOの現在と未来

XMLがますますポピュラーになっている現状からすれば、数年後には間違いなく、XMLこそが文書の保存や配布の標準形式として定着していることでしょう。多くのソフトウェア会社は、製品のバージョンアップでXMLサポートを組み込むようになっています。ほとんどの場合は、ベンダー独自のXML形式を使って文書を保存するわけですが、一部には、自社で使用しているDTDを公開するような動きもあります。DTDを公開するということは、多種多様なシステムの互換性を確保するためにXSLTを使用するという方向に直接つながっていくわけです。

Adobe社のPortable Document Format (PDF) 仕様は、世界中で広く採用されているので、Fopを使ってPDF文書を生成するという手法は、これからますますポピュラーになっていくことでしょう。Fopが対応しているのはXSL-FO文書だけだということを考えれば、Fopを使う人が増えれば増えるほど、表示方法の記述に特化したボキャブラリーとしてFOの使用も広まっていくはずです。

とはいえ、XSL-FOが文書作成の標準として定着するとは思えません。むしろ、DocBookをはじめとする他のXMLボキャブラリーの用途が広いことや、各種のJava XSLTツールがたくさん存在することからすれば、FOはあくまでも補助的なテクノロジーとして用途を広げていくと考えたほうがよさそうです。


結論

この記事では、書式設定情報を内部に組み込んだXML文書の作成という用途に特化したXMLボキャブラリー、つまりXSL-FOを取り上げました。ワープロ・ソフトのことにも触れて、文書の保存にXMLを使うことの重要性を示したり、Javaを使ってFOファイルを生成する方法について詳しく説明したりもしました。そして最後に、FOファイルを変換するためのいくつかの方法を取り上げたわけです。

この記事は、XSL-FOの完ぺきなチュートリアルとして書いたわけではありません。サンプル・コードの中で使った書式設定オブジェクトはごくわずかですし、それらのオブジェクトのプロパティーもほんの一部しか取り上げていません。参考文献には、FOの優れたチュートリアルへのリンクがあります。XSL-FOの基本の習得には、それほど時間がかかりません。実際のところ、筆者自身のことを言えば、FOの基本を理解するために費やした時間よりも、Web検索でいろいろな情報を探し出すのに費やした時間のほうが長いくらいなのですから !

参考文献

  • 2001年2月に筆者が書いたJavaとXMLによるポータブル・データベース・レポート作成という記事では、未解決の問題が残されていましたが、その問題をXSL-FOによって解決するというのが、今回の記事の趣旨だったわけです。実は、以前の記事を書いた後に、サンプル・プログラムからPDFファイルを生成する方法について尋ねるEメールをたくさんの方からいただきました。今回の記事がその答えになっているとすれば、たいへん幸いです。
  • 今回の記事では、Apache XMLプロジェクトのFOプロセッサー (Fop) のことを盛んに取り上げました。このFopについては、Apache Fopのホームページで、詳しい情報を調べたり、コードをダウンロードしたり、他の関連リソースを入手したりできます。Apacheでは、Fop関連リソースのリンクを示すために、1つのページを割いています。このFopページでは、XSL-FO関連のリンクがたくさん紹介されていますが、XML Bible については、リンク先が旧版になっているのでご注意ください。
  • Formatting Objectsの世界にどっぷり浸かってみたい方は、W3CのXSL-FO仕様書をじっくり読んでみてください。400ページ以上に及ぶ大作です。
  • Elliotte Rusty Harold氏のXML Bible の第18章 (改訂版) は、XSL-FOの好適な入門資料です。本を購入するか、オンラインで読むか、少なくとも第18章を印刷しておけば、FOの参考資料として活用できます。
  • 筆者自身も、XMLのいろいろな問題を取り上げたページを独自に運営していくつもりです。特にXMLReportsには力を入れていきたいと思っていますので、XMLReportsの最新バージョンに興味のある方は、 筆者のXMLページ をご覧ください。
  • XMLを使ったオープン・ソースのワープロ・ソフトAbiwordをダウンロードしたい方は、Abiwordのページをご覧ください。
  • StarOfficeとOpenOfficeに組み込まれているStarWriterというワープロ・ソフトも、XMLを使って文書を保存する機能を持っています。このStarWriterのDTDは、OpenOfficeのWebサイトからダウンロードできます。
  • OASIS では、文書作成の標準仕様としてDocBookというDTDを強く推奨しています。
  • RenderX が販売しているXEDは、XSL-FOファイルをPDF形式に変換する機能を持った商用ツールです。
  • Norman Walsh氏が作成したXSLとDSSSLのDocBook対応スタイルシートは、独自のXSL-FO変換を実行するためのテンプレートとして活用できます。詳しくは、sourceforgeのDocBookページをご覧ください。
  • FOをRTFに変換するためのJavaツールに興味のある方は、 StandaloneConverterをダウンロードできます。このプログラムは、sourceforge が運営しているオープン・ソース・プロジェクトjforに発展しました。このjforの詳細については、jforのホームページをご覧ください。
  • 筆者がjCatalog で見つけたXSLFast も試してみる価値があります。提供元に言わせれば、「XSL-FO文書を処理する世界初のグラフィカル・エディター」だということです。
  • ちなみに、今回の記事の作成方法もお伝えしておきましょう。まずVIM 6.0 (おなじみのエディターの最新版) を使って、XML形式の文章を書き上げ、次に1行のバッチ・ファイルを使って、Xerces でそのXML文書の構文を解析し、最後にやはり1行のバッチ・ファイルを使って、Xalan でその解析済みXML文書をHTMLファイルに変換しました。

コメント

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=243374
ArticleTitle=XSL-FOを使って文書を印刷用に加工する
publish-date=11012001