(57)【要約】【課題】  複数の要素がツリー構造化されている文書を限られた資源を用いて効率よくレイアウトできるレイアウト方法、レイアウト装置、レイアウトプログラム及びプリンタを提供する。【解決手段】  マークアップによって複数の要素がツリー構造化されている文書を入力する段階と、前記文書のルートを含む一部の前記要素のツリーである基本ツリーを解析して基本ＤＯＭツリーを生成する段階と、前記基本ツリーの葉である前記要素の子である前記要素を択一的に選択し、選択された前記要素をルートとし前記文書の葉を含む前記要素のツリーである部分ツリーを解析して部分ＤＯＭツリーを生成し、前記基本ＤＯＭツリー及び前記部分ＤＯＭツリーに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトし、前記部分ＤＯＭツリーを消去する一連の処理を繰り返す段階と、を含むレイアウト方法。【選択図】    図１
2007004232.tif 000002
【特許請求の範囲】
【請求項１】
マークアップによって複数の要素がツリー構造化されている文書を入力する段階と、
前記文書のルートを含む一部の前記要素のツリーである基本ツリーを解析して基本ＤＯＭツリーを生成する段階と、
前記基本ツリーの葉である前記要素の子である前記要素を択一的に選択し、選択された前記要素をルートとし前記文書の葉を含む前記要素のツリーである部分ツリーを解析して部分ＤＯＭツリーを生成し、前記基本ＤＯＭツリー及び前記部分ＤＯＭツリーに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトし、前記部分ＤＯＭツリーを消去する一連の処理を繰り返す段階と、
を含むレイアウト方法。
【請求項２】
前記部分ＤＯＭツリーの表示対象をレイアウトするとき、前記部分ＤＯＭツリーのレイアウト情報を前記基本ＤＯＭツリーに追加する請求項１に記載のレイアウト方法。
【請求項３】
前記文書のｈｅａｄ要素を解析してｈｅａｄＤＯＭツリーを生成する段階と、
前記ｈｅａｄＤＯＭツリーに基づいて複数の前記ＤＯＭツリーに共通するレイアウト情報を取得する段階と、
前記ｈｅａｄＤＯＭツリーを削除する段階と、をさらに含み、
前記部分ＤＯＭツリーの表示対象をレイアウトするとき、前記基本ＤＯＭツリーと前記部分ＤＯＭツリーと複数の前記ＤＯＭツリーに共通するレイアウト情報とに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトする請求項１又は２に記載のレイアウト方法。
【請求項４】
前記部分ツリーのルートはｂｏｄｙ要素の子である請求項１〜３のいずれか一項に記載のレイアウト方法。
【請求項５】
マークアップによって複数の要素がツリー構造化されている文書を入力する手段と、
前記文書のルートを含む一部の前記要素のツリーである基本ツリーを解析して基本ＤＯＭツリーを生成する手段と、
前記基本ツリーの葉である前記要素の子である前記要素を択一的に選択し、選択された前記要素をルートとし前記文書の葉を含む前記要素のツリーである部分ツリーを解析して部分ＤＯＭツリーを生成し、前記基本ＤＯＭツリー及び前記部分ＤＯＭツリーに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトし、前記部分ＤＯＭツリーを消去する一連の処理を繰り返す手段と、
を備えるレイアウト装置。
【請求項６】
マークアップによって複数の要素がツリー構造化されている文書を入力する手段と、
前記文書のルートを含む一部の前記要素のツリーである基本ツリーを解析して基本ＤＯＭツリーを生成する手段と、
前記基本ツリーの葉である前記要素の子である前記要素を択一的に選択し、選択された前記要素をルートとし前記文書の葉を含む前記要素のツリーである部分ツリーを解析して部分ＤＯＭツリーを生成し、前記基本ＤＯＭツリー及び前記部分ＤＯＭツリーに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトし、前記部分ＤＯＭツリーを消去する一連の処理を繰り返す手段と、
してコンピュータを機能させるレイアウトプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はレイアウト方法に関し、特にマークアップによって複数の要素がツリー構造化されている文書のレイアウト方法に関する。
【背景技術】
【０００２】
従来、マークアップによって複数の要素がツリー構造化されているｘｈｔｍｌ文書、ＸＭＬ文書等の文書（以下、誤解のない文脈では単に文書という）を表示するとき、コンピュータシステムはＸＭＬパーサのＡＰＩであるＤＯＭ（Document Object Model）を用いて文書要素のレイアウトに必要な情報を取得している。ＸＭＬパーサは、文書内のさまざまなノード間の参照をＤＯＭオブジェクトによって階層的に蓄えることによって文書へのランダムアクセスを可能にしているため、ＸＭＬパーサによって文書全体のデータ量を超えるデータが一度にメモリに格納されることになる。
しかし、従来のＸＭＬパーサでは、十分なメモリの容量を確保できない制約がある場合、例えばスタンドアロン型のプリンタ（特許文献１参照）では長い文書に対応できなかったり、オーバヘッドが大きくなったりする問題がある。
【０００３】
【特許文献１】特開２００４−１１４３２６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、上述の問題に鑑みて創作されたものであって、複数の要素がツリー構造化されている文書を限られた資源を用いて効率よくレイアウトできるレイアウト方法、レイアウト装置、レイアウトプログラム及びプリンタを提供することを目的とする。
【課題を解決するための手段】
【０００５】
（１）上記目的を達成するためのレイアウト方法は、マークアップによって複数の要素がツリー構造化されている文書を入力する段階と、前記文書のルートを含む一部の前記要素のツリーである基本ツリーを解析して基本ＤＯＭツリーを生成する段階と、前記基本ツリーの葉である前記要素の子である前記要素を択一的に選択し、選択された前記要素をルートとし前記文書の葉を含む前記要素のツリーである部分ツリーを解析して部分ＤＯＭツリーを生成し、前記基本ＤＯＭツリー及び前記部分ＤＯＭツリーに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトし、前記部分ＤＯＭツリーを消去する一連の処理を繰り返す段階と、を含む。
プログラムが文書内のある表示対象をレイアウトするときには、その表示対象に対応するＤＯＭインスタンスと、そのＤＯＭインスタンスに直列的にリンクされているＤＯＭインスタンスとで構成されるＤＯＭツリーに少なくともアクセスする必要はあるが、その表示対象に対応するＤＯＭツリーと兄弟関係にあるＤＯＭツリーにアクセスする必要はない。したがって、文書のルートを含む基本ツリーを解析して基本ＤＯＭツリーを生成した後、兄弟関係にある部分ＤＯＭツリーを択一的に生成して消去しながら、各部分ＤＯＭツリーの表示対象をレイアウトすることにより、メモリ空間に同居するＤＯＭインスタンスの数が減る。その結果、限られた資源を用いて文書を効率よくレイアウトすることができる。
【０００６】
（２）前記部分ＤＯＭツリーの表示対象をレイアウトするとき、前記部分ＤＯＭツリーのレイアウト情報を前記基本ＤＯＭツリーに追加してもよい。
特定の部分ＤＯＭツリーが持つレイアウト情報が他の部分ＤＯＭツリーの表示対象のレイアウトに影響を与える場合がある。例えば、特定の表示対象に周囲余白が設定されている場合である。そのようなレイアウト情報は、そのレイアウト情報を持つＤＯＭツリーが消去され、他のＤＯＭツリーの表示対象をレイアウトするときに必要となる。そこで、部分ＤＯＭツリーの表示対象をレイアウトするとき、その部分ＤＯＭツリーのレイアウト情報を基本ＤＯＭツリーに追加することにより、その部分ＤＯＭツリーを消去した後に生成される部分ＤＯＭツリーの表示対象をレイアウトするときには基本ＤＯＭツリーにアクセスすれば必要なレイアウト情報を取得できる。
【０００７】
（３）前記レイアウト方法は、前記文書のｈｅａｄ要素を解析してｈｅａｄＤＯＭツリーを生成する段階と、前記ｈｅａｄＤＯＭツリーに基づいて複数の前記部分ＤＯＭツリーに共通するレイアウト情報を取得する段階と、前記ｈｅａｄＤＯＭツリーを削除する段階と、をさらに含んでもよい。前記部分ＤＯＭツリーの表示対象をレイアウトするとき、前記基本ＤＯＭツリーと前記部分ＤＯＭツリーと複数の前記ＤＯＭツリーに共通するレイアウト情報とに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトしてもよい。
ｈｅａｄ要素には文書全体のレイアウトに影響を与える情報、例えばページサイズや特定の名前が付された要素のレイアウト枠などが直接記述されたり、これらの情報にアクセスするための参照が記述されることがある。そこで、部分ＤＯＭツリーの表示対象をレイアウトする前に、文書のｈｅａｄ要素を解析してｈｅａｄＤＯＭツリーを生成し、ｈｅａｄＤＯＭツリーに基づいて複数の部分ＤＯＭツリーに共通するレイアウト情報を取得しておくことにより、文書作成者がｈｅａｄ要素に記述したレイアウト情報を、関連する表示対象のレイアウトに反映させることができる。さらに、ｈｅａｄＤＯＭツリーからレイアウト情報を取得した後にｈｅａｄＤＯＭツリーを消去することにより、メモリを節約することができる。
【０００８】
（４）前記部分ツリーのルートはｂｏｄｙ要素の子であってもよい。
ｘｈｔｍｌ文書の内容はｂｏｄｙ要素より下の階層の要素に記述されるため、部分ＤＯＭツリーのルートをｂｏｄｙ要素の子要素に決めておくことにより、文書を解析して基本ツリーと部分ツリーの境界を設定する処理を簡略化することができる。
【０００９】
（５）上記目的を達成するためのレイアウト装置は、マークアップによって複数の要素がツリー構造化されている文書を入力する手段と、前記文書のルートを含む一部の前記要素のツリーである基本ツリーを解析して基本ＤＯＭツリーを生成する手段と、前記基本ツリーの葉である前記要素の子である前記要素を択一的に選択し、選択された前記要素をルートとし前記文書の葉を含む前記要素のツリーである部分ツリーを解析して部分ＤＯＭツリーを生成し、前記基本ＤＯＭツリー及び前記部分ＤＯＭツリーに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトし、前記部分ＤＯＭツリーを消去する一連の処理を繰り返す手段と、を備える。
文書のルートを含む基本ツリーを解析して基本ＤＯＭツリーを生成した後、兄弟関係にある部分ＤＯＭツリーを択一的に生成して消去しながら、各部分ＤＯＭツリーの表示対象をレイアウトすることにより、メモリ空間に同居するＤＯＭインスタンスの数が減る。その結果、限られた資源を用いて効率よく文書をレイアウトすることができる。
【００１０】
（６）上記目的を達成するためのレイアウトプログラムは、マークアップによって複数の要素がツリー構造化されている文書を入力する手段と、前記文書のルートを含む一部の前記要素のツリーである基本ツリーを解析して基本ＤＯＭツリーを生成する手段と、
前記基本ツリーの葉である前記要素の子である前記要素を択一的に選択し、選択された前記要素をルートとし前記文書の葉を含む前記要素のツリーである部分ツリーを解析して部分ＤＯＭツリーを生成し、前記基本ＤＯＭツリー及び前記部分ＤＯＭツリーに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトし、前記部分ＤＯＭツリーを消去する一連の処理を繰り返す手段と、してコンピュータを機能させる。
文書のルートを含む基本ツリーを解析して基本ＤＯＭツリーを生成した後、兄弟関係にある部分ＤＯＭツリーを択一的に生成して消去しながら、各部分ＤＯＭツリーの表示対象をレイアウトすることにより、メモリ空間に同居するＤＯＭインスタンスの数が減る。その結果、限られた資源を用いて文書を効率よくレイアウトすることができる。
【００１１】
（７）上記目的を達成するためのプリンタは、マークアップによって複数の要素がツリー構造化されている文書を入力する手段と、前記文書のルートを含む一部の前記要素のツリーである基本ツリーを解析して基本ＤＯＭツリーを生成する手段と、前記基本ツリーの葉である前記要素の子である前記要素を択一的に選択し、選択された前記要素をルートとし前記文書の葉を含む前記要素のツリーである部分ツリーを解析して部分ＤＯＭツリーを生成し、前記基本ＤＯＭツリー及び前記部分ＤＯＭツリーに基づいて前記部分ＤＯＭツリーの表示対象をレイアウトし、前記部分ＤＯＭツリーを消去する一連の処理を繰り返す手段と、前記レイアウトされた表示対象を印刷する手段と、を備える。
文書のルートを含む基本ツリーを解析して基本ＤＯＭツリーを生成した後、兄弟関係にある部分ＤＯＭツリーを択一的に生成して消去しながら、各部分ＤＯＭツリーの表示対象をレイアウトすることにより、メモリ空間に同居するＤＯＭインスタンスの数が減る。その結果、限られた資源を用いて文書を効率よくレイアウトすることができる。
【００１２】
尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、又はそれらの組み合わせにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。
【発明を実施するための最良の形態】
【００１３】
以下、実施例に基づいて本発明の実施の形態を説明する。
（レイアウト装置のハードウェア構成）
図２は本発明のレイアウト装置の一実施例としてのプリンタ１の構成を示すブロック図である。プリンタ１は、カード型フラッシュメモリ、ディジタルカメラ、ＣＤ、ハードディスク等に格納されている画像データ及びｘｈｔｍｌ文書から印刷データを生成し、これらの印刷対象データを単独で印刷できる所謂スタンドアロン型のプリンタである。
【００１４】
入力部１０は、カード型フラッシュメモリに格納されているデータを入力するためのメモリコントローラや、ディジタルカメラ、ＣＤドライブ、ハードディスクドライブ等の外部機器と通信するための各種の通信規格に適合したインタフェースを備えている。ワークメモリ１２は、揮発性のＲＡＭで構成されている。ワークメモリ１２には、入力部１０によって入力されたデータが格納される。印刷エンジン１４は、インクジェット方式、サーマル方式、レーザ方式等のいずれかの印刷方式に適合するように構成されている。フラッシュメモリ２２は、プリンタ１の制御プログラムが格納されている不揮発性のＲＡＭである。ＣＰＵ１６は、制御プログラムを実行することによりプリンタ１の各部を制御する。表示部２０はプリンタ１を操作するためのメニューを表示するためのＦＰＤ（Flat Panel Display）、ディスプレイコントローラ等を備える。操作部１８はメニューを操作するための押しボタンなどを備える。
尚、本発明はプリンタだけでなく、マークアップによって構造化された文書からビットマップデータを生成するためにＤＯＭを用いる様々なデバイスに適用することができる。例えば本発明は、ＰＣ（Personal Computer）、スタンドアロン型プロジェクタ、デジタルテレビジョンモニタ、携帯電話機等のｘｈｔｍｌ文書を表示しうるデバイスに適用することができる。
【００１５】
（レイアウト装置のソフトウェア構成）
図３は、プリンタ１のソフトウェア構成を示すブロック図である。
ユーザインタフェースモジュール２６、ＸＭＬパーサ３２、レイアウトモジュール３０及び印刷制御モジュール２８は、フラッシュメモリ２２に格納されている制御プログラム２４を構成しているモジュールである。
ユーザインタフェースモジュール２６は、メニューを表示部２０に表示し、操作部１８を介して行われるメニュー操作に応じて所定の処理を呼び出す。
【００１６】
レイアウトプログラムとしてのＸＭＬパーサ３２は、入力部１０によって入力される文書３６を解析してＤＯＭツリーを生成し、レイアウトモジュール３０にＡＰＩとしてＤＯＭを提供する。ＸＭＬパーサ３２は、ＤＯＭのインタフェースとして、「Ｎｏｄｅ」、「Ｄｏｃｕｍｅｎｔ」、「Ｅｌｅｍｅｎｔ」、「Ａｔｔｒ」、「Ｃｈａｒａｃｔｅｒ  Ｄａｔａ」、「Ｔｅｘｔ」、「Ｎａｍｅｄ  Ｎｏｄｅｍａｐ」及び「Ｄｏｍ  Ｅｘｃｅｐｔｉｏｎ」を有する。
【００１７】
レイアウトプログラムとしてのレイアウトモジュール３０は、ＸＭＬパーサ３２によって生成されるＤＯＭツリーを解析し、ＤＯＭツリーの表示対象をレイアウトしてビットマップデータを生成する。具体的には例えばレイアウトモジュール３０は、ＤＯＭツリーを解析して画像データを取得し、画像データの復号・拡大縮小・回転・クリッピング、文字データのレンダリング等を実行することによりＲＧＢの３チャネルのビットマップデータをページ毎に生成する。
【００１８】
印刷制御モジュール２８は、レイアウトモジュール３０によって生成されたビットマップデータに対し、解像度変換、分版（ＲＧＢからＹＭＣＫへの色空間変換）、ハーフトーニング、インタレース処理等を実行することにより印刷データを生成する。印刷制御モジュール２８は、印刷データに基づいて印刷エンジン１４を制御する。
【００１９】
（印刷対象文書の構成）
図４は、プリンタ１に入力され、ＸＭＬパーサ３２によって解析される文書３６の一例を示している。文書３６はｘｈｔｍｌに準拠しているものでなくとも、マークアップによって複数の要素がツリー構造化されている文書（例えばＸＭＬ文書）であればよい。
【００２０】
マークアップであるタグによって明示されている文書３６の構造は図５に示すとおりである。すなわち、文書３６は、プロローグ５０と、複数の要素とから構成され、ｈｔｍｌ、ｈｅａｄ、ｂｏｄｙ、ｌｉｎｋ、ｄｉｖ等の各種の要素はツリー構造化されている。図５では、要素を枠で表し、要素の包含関係を枠の包含関係によって表している。
【００２１】
ｈｅａｄ要素５４は、文書３６の複数の表示対象に共通するレイアウト情報として、例えばスタイルシート情報３８、ページサイズ情報４０、レイアウト枠情報４２等を有する。これらのレイアウト情報は、ｈｅａｄ要素５４に包含されている要素の属性又はｈｅａｄ要素５４に包含されている文字要素として記述されている。
【００２２】
ｂｏｄｙ要素６４は、文書３６の表示対象としての画像データへのリンク４４と、表示対象のレイアウト情報としての画像データの配置（ポートレート、ランドスケープ）の指定４６、拡大縮小の指定４８等を有する。これらはｂｏｄｙ要素６４に包含されている要素の属性として記述されている。尚、表示対象として画像データを例示しているが、表示対象が文書内に要素として記述される文字データであってもよいのは勿論である。
【００２３】
（ＤＯＭツリー）
図６は、ＸＭＬパーサ３２によって生成されるＤＯＭツリーと文書３６の構造の関係を示している。文書３６の全要素に対応するＤＯＭツリーは、基本ＤＯＭツリー７８、ｈｅａｄＤＯＭツリー８０、部分ＤＯＭツリー８２及び部分ＤＯＭツリー８４で構成される。基本ＤＯＭツリー７８は、基本ツリーを構成するｈｔｍｌ要素５２及びｂｏｄｙ要素６４の解析によって生成される。ｈｅａｄＤＯＭツリー８０はｈｅａｄ要素５４とｈｅａｄ要素５４に包含されている要素との解析によって生成される。部分ＤＯＭツリー８２及び部分ＤＯＭツリー８４は、それぞれｂｏｄｙ要素６４のいずれかの子要素と、その子要素に包含されている各要素とで構成される部分ツリーの解析によって生成される。ただし、これらのＤＯＭツリーは一度に生成されるものではない。言い換えれば、図６に示す全要素に対応するＤＯＭツリーの全情報の実体であるインスタンス群が同時にワークメモリ１２に存在することはない。ＸＭＬパーサ３２は、従来のように文書全体を解析して文書全体に対応するＤＯＭツリー全体をワークメモリ１２に記憶するかわりに、基本的にはレイアウトに必要なＤＯＭインスタンスを表示対象毎に生成してワークメモリ１２に記憶し、表示対象毎にＤＯＭインスタンスを消去することによりワークメモリ１２に要求される記憶容量を低減する。ただし、ＤＯＭツリーを分割すると文書３６の要素間の完全なトラバースが不可能になる。そこで、文書３６の作成者が意図しているレイアウトを完全に再現するためには、ＤＯＭツリーの分割単位の設定やレイアウト情報の待避が必要になる。以下、これらの詳細をフローチャートに基づいて説明する。
【００２４】
（レイアウト方法）
図１は、本発明の一実施例によるレイアウト方法の処理の流れを示すフローチャートである。図１に示す処理は、ユーザインタフェースモジュール２６がｘｈｔｍｌ文書の印刷要求を受け付けると開始され、ＸＭＬパーサ３２及びレイアウトモジュール３０を実行するＣＰＵ１６によって実行される。
【００２５】
ステップＳ１００では、ＸＭＬパーサ３２が印刷対象のｘｈｔｍｌ文書のｈｔｍｌ要素及びｂｏｄｙ要素を解析して基本ＤＯＭツリーを生成する。具体的には例えば、ＸＭＬパーサ３２は、文書３６、ｈｔｍｌ要素５２及びｂｏｄｙ要素６４に対応するインスタンスで構成される基本ＤＯＭツリー７８をワークメモリ１２のアドレス空間に生成する。図７は、基本ＤＯＭツリー７８を構成しているインスタンスを表している。ＸＭＬパーサ３２は、文書３６、ｈｔｍｌ要素５２及びｂｏｄｙ要素６４にそれぞれ対応するＤｏｃｕｍｅｎｔノード８６、Ｅｌｅｍｅｎｔノード８８、Ｅｌｅｍｅｎｔノード９０を生成する。ｈｔｍｌ要素５２及びｂｏｄｙ要素６４の属性は、それぞれＥｌｅｍｅｎｔノード８８のサブツリー９２、Ｅｌｅｍｅｎｔノード９０のサブツリー９８として記憶される。具体的には、サブツリー９２、９８を構成している属性ノード９４、９６、１００がｈｔｍｌ要素５２及びｂｏｄｙ要素６４の属性を保持している。
【００２６】
ステップＳ１０２では、ＸＭＬパーサ３２が印刷対象のｘｈｔｍｌ文書のｈｅａｄ要素及びｈｅａｄ要素に内包される要素を解析してＨｅａｄＤＯＭツリーを生成し、基本ＤＯＭツリーの子としてＨｅａｄＤＯＭツリーを基本ＤＯＭツリーに連結する。具体的には例えば、ＸＭＬパーサ３２は、ｈｅａｄ要素５４及びそれに内包される要素５６、５８、６０、６２に対応するインスタンスで構成されるＨｅａｄＤＯＭツリー８０をワークメモリ１２のアドレス空間に生成する。このとき上述したようにＸＭＬパーサ３２は、文書３６の各要素に対応したノードや属性のサブツリーを生成する。図８は、ＨｅａｄＤＯＭツリー８０を構成しているインスタンスを表している。そしてＸＭＬパーサ３２は、ｈｅａｄＤＯＭツリー８０のルートノードであるＨｅａｄノード１０２を基本ＤＯＭツリー７８のｈｔｍｌノード８８の子として連結する。この結果、レイアウトモジュール３０が基本ＤＯＭツリー７８及びＨｅａｄＤＯＭツリー８０を完全にトラバースできるようになる。
【００２７】
ステップＳ１０４では、レイアウトモジュール３０が基本ＤＯＭツリー及びＨｅａｄＤＯＭツリーを解析し、基本ＤＯＭツリー及びＨｅａｄＤＯＭツリーが保持するレイアウト情報を取得する。具体的には例えば、レイアウトモジュール３０は、ＨｅａｄＤＯＭツリー８０のＥｌｅｍｅｎｔノード１０６のサブツリー１１６が保持するスタイルシート情報３８（図４参照）やＨｅａｄＤＯＭツリー８０のＴｅｘｔノード１１２が保持するページサイズ情報４０（図４参照）やレイアウト枠情報４２（図４参照）を、基本ＤＯＭツリー７８及びＨｅａｄＤＯＭツリー８０をトラバースしながら取得する。
【００２８】
ステップＳ１０６では、レイアウトモジュール３０はＨｅａｄＤＯＭツリーを基本ＤＯＭツリーから切り離し、ＨｅａｄＤＯＭツリーを消去する。具体的には例えば、レイアウトモジュール３０はｈｔｍｌノード８８とｈｅａｄノード１０２とのリンクを切り離し、ＨｅａｄＤＯＭツリー８０を消去する。すなわち、レイアウトモジュール３０はＨｅａｄＤＯＭツリー８０を構成しているインスタンスをワークメモリ１２のアドレス空間から消去する。この結果、ワークメモリ１２の空き容量が増大する。
【００２９】
ステップＳ１０８、Ｓ１１０では、ＸＭＬパーサ３２が印刷対象のｘｈｔｍｌ文書のｂｏｄｙの子要素を１つずつ順に選択する。
【００３０】
ステップＳ１１２では、ＸＭＬパーサ３２は、選択したｂｏｄｙの子要素とそれに包含される要素を解析して部分ＤＯＭツリーを生成し、基本ＤＯＭツリーに連結する。具体的には例えば、文書３６のｂｏｄｙ要素６４の子要素の１つであるｄｉｖ要素６６とｄｉｖ要素６６に包含される要素６８、７０、７２、７４に対応するインスタンスで構成される部分ＤＯＭツリー８２をワークメモリ１２のアドレス空間に生成する。このとき上述したようにＸＭＬパーサ３２は、文書３６の各要素に対応したノードや属性のサブツリーを生成する。図９は部分ＤＯＭツリー８２を構成しているインスタンスを表している。そしてＸＭＬパーサ３２は、部分ＤＯＭツリー８２のルートノードであるｄｉｖノード１２８を基本ＤＯＭツリー７８のｂｏｄｙノード９０の子として連結する。この結果、レイアウトモジュール３０が基本ＤＯＭツリー７８及び部分ＤＯＭツリー８２を完全にトラバースできるようになる。すなわち、印刷対象の文書３６のｄｉｖ要素６６の表示対象である画像データ（部分ＤＯＭツリー８２の属性ノード１３８によって保持されている「ｅｅｅｅｅｅ．ＪＰＧ」。（図４及び図９参照））をレイアウトするために必要な情報をレイアウトモジュール３０がＸＭＬパーサ３２から取得できるようになる。尚、Ｈｅａｄ要素及びそれに内包されている要素が保持していたレイアウト情報は、上述したステップＳ１０４でレイアウトモジュール３０によって取得されているため、ステップＳ１１２の処理が終了した時点で、印刷対象文書のｂｏｄｙ要素及びそれに内包されている要素が保持する表示対象のレイアウト情報が一応は揃った状態になる。
【００３１】
ステップＳ１１４では、レイアウトモジュール３０は、基本ＤＯＭツリー及び部分ＤＯＭツリーを解析し、部分ＤＯＭツリーの表示対象をレイアウトする。具体的には例えば、レイアウトモジュール３０は、部分ＤＯＭツリー８２の表示対象としての画像データへのリンク４４（図４参照）と、画像データの配置の指定４６（図４参照）、拡大縮小の指定４８（図４参照）等を基本ＤＯＭツリー７８及び部分ＤＯＭツリー８２をトラバースしながら取得する。さらにレイアウトモジュール３０は、画像データへのリンク４４を参照して表示対象の画像データを取得し、ページサイズ情報４０、レイアウト枠情報４２、画像データの配置の指定４６、拡大縮小の指定４８等を用いて画像データをページの所定領域にレイアウトする。
【００３２】
ステップＳ１１６では、レイアウトモジュール３０はステップＳ１１４で部分ＤＯＭツリーから取得したレイアウト情報を基本ＤＯＭツリーに追加する。具体的には例えばレイアウトモジュール３０は基本ＤＯＭツリー７８の特定のノードのサブツリーとして、すなわち基本ＤＯＭツリー７８の属性ノードとしてレイアウト情報を基本ＤＯＭツリー７８に追加する。尚、レイアウト情報を基本ＤＯＭツリーにどのように保持させるかは任意であり、例えばＴｅｘｔノードとしてレイアウト情報を基本ＤＯＭツリーに追加してもよい。
【００３３】
前述したステップＳ１１４の処理が実行されているとき、既に消去された部分ＤＯＭツリーからレイアウトモジュール３０が取得したレイアウト情報を基本ＤＯＭツリーが保持している場合、レイアウトモジュール３０はこのレイアウト情報も用いながら表示対象をレイアウトする。具体的には例えば、図１０に示すように、先にレイアウトされる表示対象１８６にマージン１７４、１７６、１８０、１８２が設定され、後にレイアウトされる表示対象１９６にマージン１８８、１９０、１９２、１９４が設定されている場合、先に実行されるステップＳ１１６では、表示対象１８６がレイアウトされた領域を特定する情報（例えば領域左上座標１８４及び領域右下座標１７８）とマージン１７４、１７６、１８０、１８２とが基本ＤＯＭツリーに追加される。後に実行されるステップＳ１１４で表示対象１９６をレイアウトするときには、基本ＤＯＭツリーがこれらのレイアウト情報を保持しており、部分ＤＯＭツリーが表示対象１９６のマージン１８８、１９０、１９２、１９４を保持している。この場合、レイアウトモジュール３０は、２つの表示対象に個別に設定されているマージンを単純加算することなく、２つの表示対象に個別に設定されているマージンのうちより広いマージンが２つの表示対象間のマージンになるように後の表示対象１９６のレイアウト位置を設定する。このような処理の結果、文書の構造を完全に保持するＤＯＭツリーのインスタンスがワークメモリ１２のアドレス空間に存在しなくとも、レイアウトモジュール３０は文書作成者が意図したレイアウトを反映できることとなる。
【００３４】
ステップＳ１１８では、レイアウトモジュール３０は部分ＤＯＭツリーを基本ＤＯＭツリーから切り離し、部分ＤＯＭツリーを消去する。具体的には例えば、レイアウトモジュール３０はｂｏｄｙノード９０とｄｉｖノード１２８とのリンクを切り離し、部分ＤＯＭツリー８２を消去する。すなわち、レイアウトモジュール３０は部分ＤＯＭツリー８２を構成しているインスタンスをワークメモリ１２のアドレス空間から消去する。この結果、ワークメモリ１２の空き容量が増大する。
【００３５】
ＸＭＬパーサ３２は、印刷対象のｘｈｔｍｌ文書の全要素について上述の処理によってＤＯＭツリーを生成すると、残っている基本ＤＯＭツリーを消去する（ステップＳ１２０）。具体的には例えば、ＸＭＬパーサ３２は基本ＤＯＭツリー７８を構成しているインスタンスをワークメモリ１２のアドレス空間から消去する。
【００３６】
以上説明した図１に示す一連の処理が終了すると、印刷対象のｘｈｔｍｌ文書の全表示対象がレイアウトされる。その結果、ワークメモリ１２に生成されるビットマップデータは、印刷制御モジュール２８によって印刷データに変換される。印刷制御モジュール２８が印刷データに基づいて印刷エンジン１４を制御すると、印刷対象のｘｈｔｍｌ文書が印刷される。
尚、上述した実施例では基本ＤＯＭツリーの葉ノードと印刷対象文書のｂｏｄｙ要素とを対応付けたが、各部分ＤＯＭツリーのルートノードが印刷対象文書の兄弟関係にある要素に対応していれば基本ＤＯＭツリーと部分ＤＯＭツリーとの境界はどのように設定することもできる。
【図面の簡単な説明】
【００３７】
【図１】本発明の一実施例に係るフローチャート。
【図２】本発明の一実施例に係るブロック図。
【図３】本発明の一実施例に係るブロック図。
【図４】本発明の一実施例に係るｘｈｔｍｌ文書例を示す図。
【図５】本発明の一実施例に係る模式図。
【図６】本発明の一実施例に係る模式図。
【図７】本発明の一実施例に係る模式図。
【図８】本発明の一実施例に係る模式図。
【図９】本発明の一実施例に係る模式図。
【図１０】本発明の一実施例に係る模式図。
【符号の説明】
【００３８】
１：プリンタ（レイアウト装置）、１０：入力部、１２：ワークメモリ、１４：印刷エンジン、１８：操作部、２０：表示部、２２：フラッシュメモリ、２４：制御プログラム、２６：ユーザインタフェースモジュール、２８：印刷制御モジュール、３０：レイアウトモジュール、３２：ＸＭＬパーサ、３６：文書、３８：スタイルシート情報（レイアウト情報）、４０：ページサイズ情報（レイアウト情報）、４２：レイアウト枠情報（レイアウト情報）、４６：画像データの配置の指定（レイアウト情報）、４８：拡大縮小の指定（レイアウト情報）、５２：要素、５４：要素、５６：要素、６４：要素、６６：要素、６８：要素、７８：基本ＤＯＭツリー、８０：ＨｅａｄＤＯＭツリー、８２：部分ＤＯＭツリー、８４：部分ＤＯＭツリー
【図１】
2007004232.tif 000003
【図２】
2007004232.tif 000004
【図３】
2007004232.tif 000005
【図４】
2007004232.tif 000006
【図５】
2007004232.tif 000007
【図６】
2007004232.tif 000008
【図７】
2007004232.tif 000009
【図８】
2007004232.tif 000010
【図９】
2007004232.tif 000011
【図１０】
2007004232.tif 000012