(57)【特許請求の範囲】
【請求項１】
編集されたＨＴＭＬ文書に第１の所定のＨＴＭＬタグ対が含まれていると、該第１の所定のＨＴＭＬタグ対に挟まれた要素の前後に該要素を挟むように第２の所定のＨＴＭＬタグ対を追加する修正処理を実行するＨＴＭＬエディタを用いて編集されたＨＴＭＬ文書に対して処理を行うためのＨＴＭＬ文書生成プログラムであって、
コンピュータに対し、
前記ＨＴＭＬエディタが前記修正処理を施して得たＨＴＭＬ文書を、読み込む読込手順、
前記読込手順で読み込んだＨＴＭＬ文書の中から、自身はテキストに展開されないように規定されたＨＴＭＬ拡張タグを識別する識別手順、及び、
前記識別手順で識別したＨＴＭＬ拡張タグのみを要素とする前記第２の所定のＨＴＭＬタグ対を削除する削除手順
を実行させる
ことを特徴とするＨＴＭＬ文書生成プログラム。
【請求項２】
編集されたＨＴＭＬ文書にＨＴＭＬの文字飾りに関する第３の所定のＨＴＭＬタグ対が含まれているとともに、該第３の所定のＨＴＭＬタグ対の開始タグの直後にその位置に配置されるべきではない要素が配置されていると、該開始タグとその要素と順番を入れ替える修正処理を実行するＨＴＭＬエディタを用いて編集されたＨＴＭＬ文書に対して処理を行うためのＨＴＭＬ文書生成プログラムであって、
コンピュータに対し、
自身がテキストに展開されるように規定された拡張タグが第３の所定のＨＴＭＬタグ対の間に配置されているとともに、該第３の所定のＨＴＭＬタグ対の開始タグの直後と終了タグの直前とにそれぞれ任意のテキストが付加され、更に、該開始タグとその直後のテキストとが所定の識別用拡張タグ対で挟まれているとともに該終了タグとその直前のテキストとが所定の識別用拡張タグ対で挟まれているＨＴＭＬ文書に対し、前記ＨＴＭＬエディタが前記修正処理を施して得たＨＴＭＬ文書を、読み込む読込手順、
前記読込手順で読み込んだＨＴＭＬ文書の中から識別用拡張タグ対を識別する識別手順、
前記識別手順で識別した所定の識別用拡張タグ対の間の要素のうち、該第３の所定のＨＴＭＬタグ以外の要素を削除する第１の削除手順、及び、
前記識別手順で識別した所定の識別用拡張タグを削除する第２の削除手順
を実行させる
ことを特徴とするＨＴＭＬ文書生成プログラム。
【請求項３】
編集されたＨＴＭＬ文書に第１の所定のＨＴＭＬタグ対が含まれていると、該第１の所定のＨＴＭＬタグ対に挟まれた要素の前後に該要素を挟むように第２の所定のＨＴＭＬタグ対を追加し、尚且つ、編集されたＨＴＭＬ文書にＨＴＭＬの文字飾りに関する第３の所定のＨＴＭＬタグ対が含まれているとともに、該第３の所定のＨＴＭＬタグ対の開始タグの直後にその位置に配置されるべきではない要素が配置されていると、該開始タグとその要素と順番を入れ替える修正処理を実行するＨＴＭＬエディタを用いて編集されたＨＴＭＬ文書に対して処理を行うためのＨＴＭＬ文書生成プログラムであって、
コンピュータに対し、
自身がテキストに展開されるように規定された拡張タグが第３の所定のＨＴＭＬタグ対の間に配置されているとともに、該第３の所定のＨＴＭＬタグ対の開始タグの直後と終了タグの直前とにそれぞれ任意のテキストが付加され、更に、該開始タグとその直後のテキストとが所定の識別用拡張タグ対で挟まれているとともに該終了タグとその直前のテキストとが所定の識別用拡張タグ対で挟まれているＨＴＭＬ文書に対し、前記ＨＴＭＬエディタが前記修正処理を施して得たＨＴＭＬ文書を、読み込む読込手順、
前記読込手順で読み込んだＨＴＭＬ文書の中から、自身はテキストに展開されないように規定されたＨＴＭＬ拡張タグを識別する第１の識別手順、
前記第１の識別手順で識別したＨＴＭＬ拡張タグのみを要素とする前記第２の所定のＨＴＭＬタグ対を削除する第１の削除手順、
前記読込手順で読み込んだＨＴＭＬ文書の中から識別用拡張タグ対を識別する第２の識別手順、
前記第２の識別手順で識別した所定の識別用拡張タグ対の間の要素のうち、該第３の所定のＨＴＭＬタグ以外の要素を削除する第２の削除手順、及び、
前記第２の識別手順で識別した所定の識別用拡張タグを削除する第３の削除手順
を実行させる
ことを特徴とするＨＴＭＬ文書生成プログラム。
【請求項４】
編集されたＨＴＭＬ文書に第１の所定のＨＴＭＬタグ対が含まれていると、該第１の所定のＨＴＭＬタグ対に挟まれた要素の前後に該要素を挟むように第２の所定のＨＴＭＬタグ対を追加する修正処理を実行するＨＴＭＬエディタを用いて編集されたＨＴＭＬ文書に対して処理を行うためのＨＴＭＬ文書生成プログラムであって、
コンピュータに対し、
前記ＨＴＭＬエディタが前記修正処理を施して得たＨＴＭＬ文書を、読み込む読込手順、
前記読込手順で読み込んだＨＴＭＬ文書の中から、自身はテキストに展開されないように規定されたＨＴＭＬ拡張タグを識別する識別手順、及び、
前記識別手順で識別したＨＴＭＬ拡張タグのみを要素とする前記第２の所定のＨＴＭＬタグ対を削除する削除手順
を実行させるためのＨＴＭＬ文書生成プログラム
を格納したことを特徴とするコンピュータ可読媒体。
【請求項５】
編集されたＨＴＭＬ文書にＨＴＭＬの文字飾りに関する第３の所定のＨＴＭＬタグ対が含まれているとともに、該第３の所定のＨＴＭＬタグ対の開始タグの直後にその位置に配置されるべきではない要素が配置されていると、該開始タグとその要素と順番を入れ替える修正処理を実行するＨＴＭＬエディタを用いて編集されたＨＴＭＬ文書に対して処理を行うためのＨＴＭＬ文書生成プログラムであって、
コンピュータに対し、
自身がテキストに展開されるように規定された拡張タグが第３の所定のＨＴＭＬタグ対の間に配置されているとともに、該第３の所定のＨＴＭＬタグ対の開始タグの直後と終了タグの直前とにそれぞれ任意のテキストが付加され、更に、該開始タグとその直後のテキストとが所定の識別用拡張タグ対で挟まれているとともに該終了タグとその直前のテキストとが所定の識別用拡張タグ対で挟まれているＨＴＭＬ文書に対し、前記ＨＴＭＬエディタが前記修正処理を施して得たＨＴＭＬ文書を、読み込む読込手順、
前記読込手順で読み込んだＨＴＭＬ文書の中から識別用拡張タグ対を識別する識別手順、
前記識別手順で識別した所定の識別用拡張タグ対の間の要素のうち、該第３の所定のＨＴＭＬタグ以外の要素を削除する第１の削除手順、及び、
前記識別手順で識別した所定の識別用拡張タグを削除する第２の削除手順
を実行させるためのＨＴＭＬ文書生成プログラム
を格納したことを特徴とするコンピュータ可読媒体。
【請求項６】
編集されたＨＴＭＬ文書に第１の所定のＨＴＭＬタグ対が含まれていると、該第１の所定のＨＴＭＬタグ対に挟まれた要素の前後に該要素を挟むように第２の所定のＨＴＭＬタグ対を追加し、尚且つ、編集されたＨＴＭＬ文書にＨＴＭＬの文字飾りに関する第３の所定のＨＴＭＬタグ対が含まれているとともに、該第３の所定のＨＴＭＬタグ対の開始タグの直後にその位置に配置されるべきではない要素が配置されていると、該開始タグとその要素と順番を入れ替える修正処理を実行するＨＴＭＬエディタを用いて編集されたＨＴＭＬ文書に対して処理を行うためのＨＴＭＬ文書生成プログラムであって、
コンピュータに対し、
自身がテキストに展開されるように規定された拡張タグが第３の所定のＨＴＭＬタグ対の間に配置されているとともに、該第３の所定のＨＴＭＬタグ対の開始タグの直後と終了タグの直前とにそれぞれ任意のテキストが付加され、更に、該開始タグとその直後のテキストとが所定の識別用拡張タグ対で挟まれているとともに該終了タグとその直前のテキストとが所定の識別用拡張タグ対で挟まれているＨＴＭＬ文書に対し、前記ＨＴＭＬエディタが前記修正処理を施して得たＨＴＭＬ文書を、読み込む読込手順、
前記読込手順で読み込んだＨＴＭＬ文書の中から、自身はテキストに展開されないように規定されたＨＴＭＬ拡張タグを識別する第１の識別手順、
前記第１の識別手順で識別したＨＴＭＬ拡張タグのみを要素とする前記第２の所定のＨＴＭＬタグ対を削除する第１の削除手順、
前記読込手順で読み込んだＨＴＭＬ文書の中から識別用拡張タグ対を識別する第２の識別手順、
前記第２の識別手順で識別した所定の識別用拡張タグ対の間の要素のうち、該第３の所定のＨＴＭＬタグ以外の要素を削除する第２の削除手順、及び、
前記第２の識別手順で識別した所定の識別用拡張タグを削除する第３の削除手順
を実行させるためのＨＴＭＬ文書生成プログラム
を格納したことを特徴とするコンピュータ可読媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＨＴＭＬ文書に規定されていない拡張タグを含むＨＴＭＬ文書に基づき、当該拡張タグを含まないＨＴＭＬ文書を生成するＨＴＭＬ文書生成プログラム，ＨＴＭＬ文書生成プログラムを格納したコンピュータ可読媒体，ＨＴＭＬ文書生成方法，及びＨＴＭＬ文書生成装置に、関する。
【０００２】
【従来の技術】
ＨＴＭＬ（Hypertext Markup Language）は、インターネットやイントラネットにおけるページ記述言語として広く利用されている。このＨＴＭＬで記述されたデータ（ＨＴＭＬ文書）は、ＷＷＷ（World Wide Web）ブラウザによって画面表示される。なお、このＨＴＭＬ文書内に、データベース等による外部のデータを組み込むために、拡張タグが利用される。この拡張タグは、ＨＴＭＬにより規定された正式のタグではないが、正式のタグに類似した形式で記述される。
【０００３】
この拡張タグを含んだＨＴＭＬ文書（拡張ＨＴＭＬ文書）は、ＨＴＭＬ文書生成装置により処理される。即ち、このＨＴＭＬ文書生成装置は、拡張ＨＴＭＬ文書中の拡張タグによる指定に従って、データベースから必要なデータを取得し、取得したデータに基づいてＨＴＭＬ文書を生成する。なお、生成されたＨＴＭＬ文書には、拡張タグは含まれていない。
【０００４】
このＨＴＭＬ文書生成装置における処理の内容に応じて、拡張タグは、第１種の拡張タグと第２種の拡張タグとに、分類される。第１種の拡張タグは、ＨＴＭＬ文書生成装置における処理の際に、当該拡張タグ自体がテキストに展開されないものである。一方、第２種の拡張タグは、ＨＴＭＬ文書生成装置における処理の際に、当該拡張タグ自体がテキストに展開されるものである。
【０００５】
図２２は、第１種の拡張タグの例を示す図である。この図において、<!IF "t == 0">，<!ELSE>，及び<!/IF>が、拡張タグであり、いずれも第１種の拡張タグである。この図２２の拡張ＨＴＭＬ文書は、ＨＴＭＬ文書生成装置により、図２３の（ａ）又は（ｂ）のＨＴＭＬ文書に変換される。なお、データベース中の変数ｔの値が０である場合には、図２３の（ａ）のＨＴＭＬ文書が生成され、それ以外の場合には、図２３の（ｂ）のＨＴＭＬ文書が生成される。
【０００６】
この図２２の拡張タグは、データベース中の変数ｔの値に応じて、<!IF "t == 0">及び<!ELSE>間のデータ，又は，<!ELSE>及び<!/IF>間のデータのいずれか一方のみが選択されることを指定している。なお、当該拡張タグ自体は、テキストに展開されていない。
【０００７】
図２４は、第２種の拡張タグの例を示す図である。この図において、<!REPLACE x>が、第２種の拡張タグである。この拡張タグは、ＨＴＭＬ文書生成装置により、データベース操作言語の変数ｘの値に置換される。例えば、変数ｘの値が５００であれば、<!REPLACE x>は、５００に置き換えられる。このため、図２５に示されたＨＴＭＬ文書が生成される。即ち、この第２種の拡張タグは、当該拡張タグ自体がテキストに展開される。
【０００８】
なお、ＨＴＭＬ文書生成装置から出力された図２３及び図２５のようなＨＴＭＬ文書には、拡張タグが含まれていない。従って、これらのＨＴＭＬ文書は、ＷＷＷブラウザによって正常に画面表示される。
【０００９】
【発明が解決しようとする課題】
上記のように、図２２及び図２４に示された形式で拡張ＨＴＭＬ文書が作成されていると、ＨＴＭＬ文書生成装置は、これらの拡張ＨＴＭＬ文書を正常に処理することができる。なお、拡張ＨＴＭＬ文書の作成者は、これらの拡張ＨＴＭＬ文書を、テキストエディタを用いて作成することもできるが、通常は、ＨＴＭＬエディタを用いて作成している。このＨＴＭＬエディタは、作成者が入力したデータを、ＨＴＭＬの形式に正しく適合させるように修正する修正機能を有する。この修正機能は、通常のＨＴＭＬ文書作成の際には、便利な機能である。しかし、この修正機能は、上記の拡張タグを含んだ拡張ＨＴＭＬ文書作成の際には、以下に示すような不都合を生じさせることがある。
【００１０】
まず、<UL></UL>等のように、開始タグ及び終了タグ間に要素を含ませるＨＴＭＬのタグ対が、要素として第１種の拡張タグを含む場合の問題について、説明する。例えば、あるＨＴＭＬエディタは、図２２に示された拡張ＨＴＭＬ文書を、図２６に示された拡張ＨＴＭＬ文書に変換してしまう。
【００１１】
なお、ＨＴＭＬによると、開始タグ<UL>及び終了タグ</UL>によりなるタグ対間には、下位のタグ対である<LI>及び</LI>に挟まれたリストが列挙されるはずである。このため、ＨＴＭＬエディタは、拡張タグ<!IF "t == 0">，<!ELSE>，及び，<!/IF>を、リストとして扱い、これら各拡張タグの前後に、<LI>及び</LI>を追加してしまう。このため、<!IF "t == 0">，<!ELSE>，及び，<!/IF>は、夫々、<LI><!IF "t == 0"></LI>，<LI><!ELSE></LI>，及び，<LI><!/IF></LI>に、変換されてしまう。このため、ＨＴＭＬ文書生成装置は、図２３の（ａ）又は（ｂ）のＨＴＭＬ文書を生成することができない。
【００１２】
また、あるＨＴＭＬエディタは、図２４に示された拡張ＨＴＭＬ文書を、図２７に示された拡張ＨＴＭＬ文書に変換してしまう。即ち、ＨＴＭＬによると、文字飾りに関するタグ対（例えば、開始タグ<EM>及び終了タグ</EM>）間には、テキストが存在するはずである。このため、ＨＴＭＬエディタは、この<EM>の直後に、タグ状の形式をした第２種の拡張タグ<!REPLACE x>が配置されるべきではないと判断する。そして、ＨＴＭＬエディタは、<EM>及び<!REPLACE x>の順番を入れ換える。すると、図２７に示されるように、<EM>及び</EM>間には、テキストであるyenのみが存在するようになる。この図２７の拡張ＨＴＭＬ文書は、ＨＴＭＬ文書生成装置により、500<EM>yen</EM>というＨＴＭＬ文書に変換されてしまう。これでは、“500yen”の部分に対して文字飾り（EM：強調）が施されるのではなく、“yen”の部分に対してのみ文字飾りが施されてしまう。
【００１３】
これらの問題を解消するためには、上記の拡張タグを正しく認識するＨＴＭＬエディタが開発されればよい。しかし、現在広く利用されている各種ＨＴＭＬエディタを、全て上記拡張タグに対応させることは、現実的ではない。
【００１４】
そこで、ＨＴＭＬエディタを変更することなく、現状のままのＨＴＭＬエディタにより編集された拡張タグを含むＨＴＭＬ文書を処理可能なＨＴＭＬ文書生成装置，ＨＴＭＬ文書生成プログラム，及びＨＴＭＬ文書生成プログラムを格納したコンピュータ可読媒体を提供することを、本発明の課題とする。
【００１５】
【課題を解決するための手段】
本発明によるＨＴＭＬ文書生成装置は、プログラムを読み込むことによって、このプログラムに従った処理を実行する処理装置と、ＨＴＭＬ文書生成プログラムを記憶した記憶媒体とを、備えている。
【００１６】
このＨＴＭＬ文書生成プログラムには、自身はテキストに展開されないように規定された第１種の拡張タグに関する処理を行う第１のＨＴＭＬ文書生成プログラムと、自身がテキストに展開されるように規定された第２種の拡張タグに関する処理を行う第２のＨＴＭＬ文書生成プログラムとがある。
【００１７】
第１のＨＴＭＬ文書生成プログラムは、前記処理装置に対して、前記ＨＴＭＬ文書を読み込ませ、開始タグ及び終了タグ間に所定の形式で構成要素を含ませるＨＴＭＬのタグ対が、構成要素として第１種の拡張タグにより記述されたもののみを含む場合，又は，構成要素を有しない場合には、当該タグ対が存在しないものとみなすことにより、第１種の拡張タグを認識させ、この第１種の拡張タグによる指定に従って該第１種の拡張タグを含まないＨＴＭＬ文書を生成させる。
【００１８】
この第１のＨＴＭＬ文書生成プログラムは、ＨＴＭＬエディタによって作成者の意図に反して挿入されてしまったＨＴＭＬタグを、存在しないものとみなすことにより、処理装置に対して第１種の拡張タグを作成者の意図通りに認識させることができる。このため、作成者の意図通りのＨＴＭＬ文書が生成される。
【００１９】
第２のＨＴＭＬ文書生成プログラムは、前記処理装置に対して、ＨＴＭＬの文字飾りに関する開始タグ及び終了タグ間に、第２種の拡張タグが配置される場合には、文字飾りに関する開始タグの直後及び文字飾りに関する終了タグの直前に夫々任意のテキストが付加され、これら文字飾りに関するタグ及びテキストの各組が夫々所定の識別用拡張タグ対で挟まれるように記述されたＨＴＭＬ文書を、読み込ませ、識別用拡張タグ対で挟まれたもののうち、テキストを存在しないものとみなすとともに、識別用拡張タグ対を存在しないものとみなすことにより、文字飾りに関するタグを認識させ、第２種の拡張タグによる指定に従って該第２種の拡張タグを含まないＨＴＭＬ文書を生成させる。
【００２０】
この第２のＨＴＭＬ文書生成プログラムは、ＨＴＭＬ文書中の文字飾りに関するタグに識別用拡張タグ及び任意のテキストが追加されていれば、このＨＴＭＬ文書が、ＨＴＭＬエディタにより作成者の意図に反して変換されたとしても、文字飾りに関するタグを、正しく第２種の拡張タグに対して作用させることができる。このため、第２種の拡張タグがテキストに変換されると、このテキストに、文字飾りに関するタグが正しく作用する。
【００２１】
【発明の実施の形態】
以下、図面に基づいて本発明の一実施形態を説明する。図１は、本実施形態のシステム構成図である。このシステムは、パーソナルコンピュータやワークステーション等のコンピュータにより夫々構成されたエディタ装置１，データベース装置２，ＨＴＭＬ文書生成装置３，ＷＷＷサーバ装置４，及びＷＷＷブラウザ装置５を、備えている。
【００２２】
エディタ装置１は、図示せぬＨＤＤを、有している。このエディタ装置１のＨＤＤ内には、予め、ＨＴＭＬエディタ・プログラムがインストールされている。そして、ＨＴＭＬ文書の作成者は、このＨＴＭＬエディタ・プログラムが稼動した状態のエディタ装置１を利用して、ＨＴＭＬ文書を作成する。
【００２３】
データベース装置２は、図示せぬＨＤＤを、有している。このデータベース装置２のＨＤＤ内には、予め、データベース・マネジメント・システム（ＤＢＭＳ）２１がインストールされているとともに、データベース２２が蓄積されている。
【００２４】
ＨＴＭＬ文書生成装置３は、コンピュータ可読媒体としての図示せぬＨＤＤを、有している。このＨＴＭＬ文書生成装置３のＨＤＤ内には、予め、拡張タグ処理用のＨＴＭＬ文書生成プログラムが、インストールされている。このＨＴＭＬ文書生成プログラムは、第１種の拡張タグに関する処理を行う部分（第１のＨＴＭＬ文書生成プログラム），及び，第２種の拡張タグに関する処理を行う部分（第２のＨＴＭＬ文書生成プログラム）を、含んでいる。そして、ＨＴＭＬ文書生成装置３のＨＤＤにおける第１のＨＴＭＬ文書生成プログラムを格納した領域が、第１の記憶媒体に相当し、ＨＴＭＬ文書生成装置３のＨＤＤにおける第２のＨＴＭＬ文書生成プログラムを格納した領域が、第２の記憶媒体に相当する。このＨＴＭＬ文書生成装置３は、エディタ装置１及びデータベース装置２に、夫々接続されている。
【００２５】
そして、このＨＴＭＬ文書生成装置３は、エディタ装置１からＨＴＭＬ文書を取得するとともに、取得したＨＴＭＬ文書に対して後述のごとく事前処理を施す。さらに、このＨＴＭＬ文書生成装置３は、事前処理したＨＴＭＬ文書中の拡張タグの指定に従って、データベース２２を参照する。そして、ＨＴＭＬ文書生成装置３は、データベース２２中のデータを取得してＨＴＭＬ文書を生成する。なお、生成されたＨＴＭＬ文書は、拡張タグを含まない通常のＨＴＭＬ文書である。
【００２６】
サーバ装置４は、図示せぬＨＤＤを、有している。このサーバ装置４のＨＤＤ内には、予め、ＷＷＷサーバ・プログラムがインストールされている。このサーバ装置４は、ＨＴＭＬ文書生成装置３に接続されている。そして、このサーバ装置４は、ＨＴＭＬ文書生成装置３により生成されたＨＴＭＬ文書を取得する。取得されたＨＴＭＬ文書は、サーバ装置４のＨＤＤ内に格納される。
【００２７】
ブラウザ装置５は、図示せぬＨＤＤを、有している。このブラウザ装置５のＨＤＤ内には、予め、ＷＷＷブラウザ・プログラムがインストールされている。このブラウザ装置５は、インターネットやイントラネット等のネットワークを介して、サーバ装置４に接続されている。そして、このブラウザ装置５は、サーバ装置４からＨＴＭＬ文書を取得する。取得されたＨＴＭＬ文書は、ブラウザ装置５の図示せぬディスプレイ上に、表示される。
【００２８】
なお、上記のエディタ装置１にインストールされたＨＴＭＬエディタ・プログラムは、拡張タグに対応していない。このため、ＨＴＭＬ文書の作成者が、第１種の拡張タグを含む図２２のＨＴＭＬ文書をエディタ装置１に入力すると、このエディタ装置１は、入力されたＨＴＭＬ文書を、図２６のように変換してしまう。この図２６のＨＴＭＬ文書は、作成者が意図したものとは異なっている。
【００２９】
本実施形態のＨＴＭＬ文書生成装置３は、図２６のＨＴＭＬ文書を、後述のように事前処理することにより、図２２と同内容のＨＴＭＬ文書を取得することができる。そのうえで、ＨＴＭＬ文書生成装置３は、図２２のＨＴＭＬ文書に基づいてその拡張タグを処理し、拡張タグを含まない図２３のＨＴＭＬ文書を生成する。
【００３０】
また、ＨＴＭＬ文書の作成者が、第２種の拡張タグを含む図２４のＨＴＭＬ文書をエディタ装置１に入力したとすると、このエディタ装置１は、入力されたＨＴＭＬ文書を、図２７のように変換してしまう。この図２７のＨＴＭＬ文書は、作成者の意図したものとは異なっている。
【００３１】
しかし、後述するように、ＨＴＭＬ文書の作成者が、所定の識別用拡張タグ対である<!WLFONT>及び<!/WLFONT>，並びに任意のテキスト（例えば“ａ”）による“<!WLFONT>a<!/WLFONT>”を用いて、図２のようなＨＴＭＬ文書をエディタ装置１に入力すると、ＨＴＭＬ文書生成装置３は、作成者の意図した通りのＨＴＭＬ文書を取得することができる。
【００３２】
なお、エディタ装置１は、作成者が入力した図２のＨＴＭＬ文書を、図３のように変換してしまうが、ＨＴＭＬ文書生成装置３は、この図３のＨＴＭＬ文書を後述のように事前処理することにより、図２４のＨＴＭＬ文書を取得することができる。そのうえで、ＨＴＭＬ文書生成装置３は、図２４のＨＴＭＬ文書に基づいてその拡張タグを処理し、拡張タグを含まない図２５のＨＴＭＬ文書を生成する。
【００３３】
以下、ＨＴＭＬ文書生成装置３における処理について、説明する。このＨＴＭＬ文書作成装置３は、エディタ装置１から取得したＨＴＭＬ文書を構文解析（パーズ：parse）することにより、構造木を作成する。そして、このＨＴＭＬ文書作成装置３は、作成した構造木を所定の仕様を満たすように、変換する。さらに、ＨＴＭＬ文書生成装置３は、所定の仕様を満たすように変換した構造木を、ＨＴＭＬ文書に変換することにより、作成者の意図した通りのＨＴＭＬ文書を作成する。ここまでの処理を、事前処理という。
【００３４】
そのうえで、ＨＴＭＬ文書生成装置３は、データベース装置２におけるデータベース２２を参照しながら、事前処理後のＨＴＭＬ文書中の第１の拡張タグ及び第２種の拡張タグを処理し、これら拡張タグを含まないＨＴＭＬ文書を生成する。生成されたＨＴＭＬ文書は、サーバ装置４へ送信されて、このサーバ装置４のＨＤＤ内に格納される。
【００３５】
以下、このＨＴＭＬ文書生成装置３における事前処理について、さらに説明する。このＨＴＭＬ文書生成装置３は、ＨＴＭＬ文書をパーズして得た構造木を利用して、事前処理を行っている。このパーズの際に、ＨＴＭＬのタグ及び拡張タグは、以下のようにタイプＡとタイプＢとに分類されて、処理される。
【００３６】
タイプＡのタグは、当該タグの位置において意味を与えるものである。このタイプＡのタグは、単独で取り扱われるために、対応する終了タグがない。タイプＢのタグは、所定の範囲を対象として意味を与えるものである。この所定の範囲は、例えば、開始タグ及び終了タグにより規定される。この場合には、タイプＢのタグは、開始タグ及び終了タグによりなるタグ対として用いられる。
【００３７】
そして、ＨＴＭＬ文書生成装置３は、第１の拡張タグに関連した処理を行う場合には、所定の第１の設定に従って、ＨＴＭＬ文書をパーズする。この第１の設定は、以下に示すＨＴＭＬの構造タグ及びその要素タグをタイプＢとみなすとともに、これら構造タグ又は要素タグ以外のＨＴＭＬタグと拡張タグとをタイプＡとみなすように、設定するものである。
【００３８】
この構造タグは、通常、開始タグ及び終了タグからなるタグ対として利用される。そして、このタグ対間には、該タグ対に対応する要素タグが列挙されることが、想定されている。なお、要素タグも、通常は、開始タグ及び終了タグからなるタグ対として利用される。そして、この要素タグのタグ対は、構成要素を含むことができる。この構造タグの例として、<UL>及び</UL>が挙げられる。この構造タグに対応する要素タグは、<LI>である。即ち、<UL>及び</UL>間には、<LI>により記述されたリスト（構成要素）が列挙されることが、想定されている。なお、<LI>に対応する終了タグ</LI>は、省略可能である。
【００３９】
予め、ＨＴＭＬ文書生成装置３は、そのＨＤＤ内に、構造タグ及び要素タグのテーブルを、格納している。図４は、構造タグ及び要素タグのテーブルを示す図である。この図４に示されるように、<UL>は構造タグであり、その要素タグは<LI>である。また、<TABLE>は構造タグであり、その要素タグは<TH>及び<TR>である。さらに、これら<TH>及び<TR>は構造タグでもあり、対応する要素タグは<TD>である。そして、ＨＴＭＬ文書生成装置３は、この図４のテーブルを参照することにより、ＨＴＭＬ文書中の構造タグ及び要素タグを、認識することができる。
【００４０】
さらに、ＨＴＭＬ文書生成装置３は、そのＨＤＤ内に、第１種拡張タグのテーブルを、格納している。図５は、第１種拡張タグのテーブルを示す図である。そして、ＨＴＭＬ文書生成装置３は、この図５に示されるテーブルを参照することにより、ＨＴＭＬ文書中の<!IF>，<!ELSE>，<!/IF>，<!FOREACH>，及び<!/FOREACH>等が第１種の拡張タグであると、認識することができる。
【００４１】
一方、ＨＴＭＬ文書生成装置３は、第２の拡張タグに対する処理を行う場合には、所定の第２の設定に従って、ＨＴＭＬ文書をパーズする。この第２の設定は、識別用拡張タグ対<!WLFONT>及び<!/WLFONT>のみをタイプＢとみなすとともに、それ以外の拡張タグ又はＨＴＭＬのタグをタイプＡとみなすように、指定するものである。なお、ＨＴＭＬ文書作成装置３は、そのＨＤＤ内に、図示せぬ識別用拡張タグ対のテーブルを格納している。そして、ＨＴＭＬ文書作成装置３は、このテーブルを参照することにより、ＨＴＭＬ文書中の識別用拡張タグ対を認識することができる。
【００４２】
図６は、ＨＴＭＬ文書生成装置３の事前処理を示すフローチャートである。以下、この図の各ステップ毎に説明する。この図６のフローチャート開始後のＳ１では、ＨＴＭＬ文書生成装置３は、エディタ装置１から取得したＨＴＭＬ文書を、第１の設定に従ってパーズすることにより、構造木を作成する。例えば、エディタ装置１により図２６のように変換されてしまったＨＴＭＬ文書は、このＳ１の処理により、図７の構造木に変換される。
【００４３】
次のＳ２では、ＨＴＭＬ文書生成装置３は、Ｓ１で作成された構造木を、所定の第１の仕様を満たすように変換する。例えば、図７の構造木は、（図８の状態を経て）図９に示されるように変換される。なお、このＳ２の処理については、後において詳述する。
【００４４】
次のＳ３では、ＨＴＭＬ文書生成装置３は、Ｓ２で変換された構造木に基づいて、ＨＴＭＬ文書を作成する。このＨＴＭＬ文書生成装置３は、例えば、図９の構造木に基づいて、図２２と同内容のＨＴＭＬ文書を作成する。
【００４５】
以上のＳ１乃至Ｓ３の処理により、第１の拡張タグに関する問題は、解決する。そして、次のＳ４以降の処理により、第２の拡張タグに関する問題が、解決することになる。
【００４６】
Ｓ４では、ＨＴＭＬ文書生成装置３は、Ｓ３において作成されたＨＴＭＬ文書を、第２の設定に従ってパーズすることにより、構造木を作成する。例えば、エディタ装置１により図３のように変換されたＨＴＭＬ文書は、第１種の拡張タグを含まないので、Ｓ１乃至Ｓ３の処理によって変換されることがない。このため、Ｓ４では、この図３のＨＴＭＬ文書が処理されることになる。このＳ４の処理により、図３のＨＴＭＬ文書は、図１０の構造木に変換される。
【００４７】
次のＳ５では、ＨＴＭＬ文書生成装置３は、Ｓ４で作成された構造木を、第２の仕様を満たすように変換する。例えば、図１０の構造木は、図１１のように変換される。なお、このＳ５の処理については、後において詳述する。
【００４８】
次のＳ６では、ＨＴＭＬ文書生成装置３は、Ｓ５で変換された構造木に基づいて、ＨＴＭＬ文書を作成する。このＨＴＭＬ文書生成装置３は、例えば、図１１の構造木に基づいて、図２４と同内容のＨＴＭＬ文書を作成する。
【００４９】
以下、図６におけるＳ２の処理について詳述する。このＳ２において、ＨＴＭＬ文書生成装置３は、Ｓ１において作成した構造木のルートを処理基準に設定して、図１２のフローチャートを起動する。
【００５０】
この図１２のフローチャート開始後最初のＳ２０１では、ＨＴＭＬ文書生成装置３は、処理基準の直下に未処理のノードがあるかどうか、判別する。そして、ＨＴＭＬ文書生成装置３は、未処理のノードがあれば処理をＳ２０２へ進め、未処理のノードがなければ処理をＳ２１０へ進める。例えば、図７の構造木の場合に、処理基準がルートに設定されていると、この処理基準の直下のノードは、タグ“ＵＬ”のノードである。この“ＵＬ”のノードが未処理であれば、処理はＳ２０２へ進む。
【００５１】
Ｓ２０２では、ＨＴＭＬ文書生成装置３は、未処理のノードのうちの１つを、処理対象ノードに設定する。図７の構造木の場合には、“ＵＬ”のノードが処理対象ノードになる。
【００５２】
次のＳ２０３では、ＨＴＭＬ文書生成装置３は、処理対象ノードが構造タグ又は要素タグであるかどうか、判別する。ＨＴＭＬ文書生成装置３は、処理対象ノードが構造タグ又は要素タグである場合には処理をＳ２０４へ進め、それ以外の場合には処理をＳ２０１へ戻す。図７の構造木において、“ＵＬ”のノードが処理対象ノードである場合には、ＨＴＭＬ文書生成装置３は、図４のテーブルを参照することにより、この“ＵＬ”のノードが構造タグであることを認識する。この場合には、処理は、Ｓ２０４へ進む。
【００５３】
Ｓ２０４では、ＨＴＭＬ文書生成装置３は、処理対象ノードが直下のノードを持つかどうか判別する。そして、ＨＴＭＬ文書生成装置３は、処理対象ノードが直下のノードを持たない場合には処理をＳ２０５へ進め、処理対象ノードを持つ場合には処理をＳ２０６へ進める。図７の構造木において、“ＵＬ”のノードが処理対象ノードであれば、このノードは直下のノードを持つので、処理はＳ２０６へ進む。なお、この図７の構造木の例では、Ｓ２０５の処理は一度も実行されない。このため、Ｓ２０５の処理については、別の構造木の例を用いて後述する。
【００５４】
Ｓ２０６では、ＨＴＭＬ文書生成装置３は、処理対象ノードの直下のノードに構造タグ又は要素タグがあるかどうか、判別する。そして、ＨＴＭＬ文書生成装置３は、処理対象ノードの直下に構造タグ又は要素タグがある場合には処理をＳ２０７へ進め、処理対象ノードの直下に構造タグがない場合には、処理をＳ２０８へ進める。図７の構造木において、“ＵＬ”のノードが処理対象ノードであれば、このノードの直下には、“ＬＩ”のノードが６つある。なお、ＨＴＭＬ文書生成装置３は、図４のテーブルを参照することにより、この“ＬＩ”のノードが要素タグであると判別するので、処理をＳ２０７へ進める。
【００５５】
Ｓ２０７では、ＨＴＭＬ文書生成装置３は、処理対象ノードを処理基準とした再帰的処理を実行する。即ち、“ＵＬ”のノードが処理対象ノードであれば、この“ＵＬ”のノードを処理基準とした図１２のフローチャートを、再帰的に呼び出す。このＳ２０７において呼び出された図１２のフローチャートは、一段階下の階層の処理として実行される。この一段階下の階層の図１２のフローチャートの処理が完了することにより、当該Ｓ２０７の処理は終了する。そして、処理は、Ｓ２０１へ移行する。
【００５６】
なお、以下の説明において、元の階層（▲１▼の階層）の各ステップと、一段階下の階層（▲２▼の階層）の各ステップとを区別するために、元の階層のステップを▲１▼−Ｓ２０１の形式で表記し、一段階下の階層のステップを、▲２▼−Ｓ２０１の形式で標記する。
【００５７】
上記の元の階層の▲１▼−Ｓ２０２において、図７の構造木の“ＵＬ”タグが処理対象ノードに設定されていた場合には、一段階下の階層のステップ（▲２▼−Ｓ２０１以降のステップ）において、“ＵＬ”のノードが処理基準となる。すると、第１回目の▲２▼−Ｓ２０１では、この処理基準である“ＵＬ”のノードの下に未処理の“ＬＩ”のノードが６つあるので、処理は▲２▼−Ｓ２０２へ進む。
【００５８】
この▲２▼−Ｓ２０２において、６つの“ＬＩ”のノードのうちの先頭のものが処理対象ノードに設定されると、▲２▼−Ｓ２０３において、当該タグは要素タグであると判別されて、処理は▲２▼−Ｓ２０４へ進む。さらに、この“ＬＩ”のノードは、その直下に“！ＩＦ”のノードを有するので、処理は▲２▼−Ｓ２０６へ進む。この▲２▼−Ｓ２０６において、当該直下のノードには構造タグが含まれていないと判別され、処理は▲２▼−Ｓ２０８へ進む。
【００５９】
▲２▼−Ｓ２０８では、ＨＴＭＬ文書生成装置３は、▲２▼−Ｓ２０２において設定された処理対象ノードの直下のノードが、第１種の拡張タグのノードのみであるかどうか判別する。そして、ＨＴＭＬ文書作成装置３は、処理対象ノードの直下のノードが第１種の拡張タグのみである場合には、処理を▲２▼−Ｓ２０９へ進め、それ以外の場合には処理を▲２▼−Ｓ２０１へ戻す。図７の構造木における６つの“ＬＩ”のノードのうちの先頭のものが、処理対象ノードに設定されていると、このノードの直下のノードは、第１種の拡張タグ“！ＩＦ”のノードのみであるので、処理は、▲２▼−Ｓ２０９へ進む。
【００６０】
▲２▼−Ｓ２０９では、ＨＴＭＬ文書生成装置３は、処理対象ノードの直下の第１種の拡張タグを、当該処理対象ノードの位置へ移動させるとともに、この処理対象ノード自体を削除する。図７の構造木における６つの“ＬＩ”のノードのうちの先頭のものが、処理対象ノードに設定されていると、このノードの直下の第１種の拡張タグ“！ＩＦ”のノードが、図８に示されるように、処理基準である“ＵＬ”タグの直下へ移動する。
【００６１】
なお、上述の処理が同様に繰り返されることにより、他の第１種の拡張タグである“！ＥＬＳＥ”及び“！／ＩＦ”のノードも、処理基準である“ＵＬ”のノードの直下へ移動する。即ち、６つの“ＬＩ”のノードが全て処理されると、図９に示される構造木が得られる。すると、その後の▲２▼−Ｓ２０１において、ＨＴＭＬ文書生成装置３は、処理基準である“ＵＬ”のノードの直下に未処理のノードがないと判別して、処理を▲２▼−Ｓ２１０へ進める。
【００６２】
▲２▼−Ｓ２１０では、ＨＴＭＬ文書生成装置３は、処理基準の直下のノードが第１種の拡張タグのノードのみであるかどうか判別する。そして、ＨＴＭＬ文書生成装置３は、処理基準の直下のノードが第１種の拡張タグのノードのみであれば処理を▲２▼−Ｓ２１１へ進め、それ以外の場合には処理を終了させる。図９の構造木の例では、いずれの階層においてもＳ２１１の処理は実行されない。このため、Ｓ２１１の処理については、後において、別の構造木の例を参照して説明する。
【００６３】
この図９の構造木が得られた後に、上記の如く▲２▼の階層の処理は終了する。この▲２▼の階層の処理が終了することは、元の階層の▲１▼−Ｓ２０７の処理が終了することに相当する。従って、処理は▲１▼−Ｓ２０１へ移行する。この▲１▼の階層では、ルートが処理基準になっている。このため、ルートの直下のノードが全て処理済であれば、全ての処理は完了する。即ち、図６のＳ２の処理が完了する。
【００６４】
この図９の構造木は、図６のＳ３において図２２と同内容のＨＴＭＬ文書に変換される。後において説明するが、Ｓ３において得られたＨＴＭＬ文書が識別用拡張タグ<!WLFONT>を含んでいない場合には、図６のＳ４乃至Ｓ６の処理の結果得られるＨＴＭＬ文書は、Ｓ３において得られたＨＴＭＬ文書と同内容になる。従って、事前処理である図６の処理の結果、図２２と同内容のＨＴＭＬ文書が得られる。
【００６５】
この事前処理後、ＨＴＭＬ文書生成装置３は、データベース装置２におけるデータベース２２を参照しながら、ＨＴＭＬ文書中の第１の拡張タグ及び第２種の拡張タグを処理し、これら拡張タグを含まないＨＴＭＬ文書を生成する。このＨＴＭＬ文書生成装置３は、例えば、図２２のＨＴＭＬ文書に基づいて、図２３の（ａ）又は（ｂ）のＨＴＭＬ文書を生成する。この生成処理の際に、データベース２２中の変数ｔの値が０である場合には、ＨＴＭＬ文書生成装置３は、図２３の（ａ）のＨＴＭＬ文書を生成する。一方、変数ｔの値が０でなければ、図２３の（ｂ）のＨＴＭＬ文書を生成する。
【００６６】
以下、事前処理を示す図６のフローチャートにおけるＳ２の処理（上記図１２の処理）について、他の構造木の例を参照してさらに説明する。まず、この構造木の元になるＨＴＭＬ文書について説明する。図１３は、ＨＴＭＬ文書の一例を示す図である。まず、ＨＴＭＬ文書の作成者がエディタ装置１を用いて図１３のＨＴＭＬ文書を入力する。
【００６７】
なお、エディタ装置１は、構造タグ対<TABLE>及び</TABLE>は、タグ対<TH>及び</TH>と、このタグ対<TH>及び</TH>の後に配置されるタグ対<TR>及び</TR>とを含むものと、認識している。さらに、エディタ装置１は、これらタグ対<TH>及び</TH>とタグ対<TR>及び</TR>とは、夫々タグ対<TD>及び</TD>を含むものと、認識している。このため、エディタ装置１は、図１３のＨＴＭＬ文書中の<!FOREACH>の前後と<!/FOREACH>の前後とには、タグ対が不足しているものと判別する、そして、エディタ装置１は、作成者の意図に反するタグ対<TD>及び</TD>（<TR>及び</TR>）を補ってしまう。このため、図１３のＨＴＭＬ文書は、図１４に示されるように変換されてしまう。
【００６８】
そして、ＨＴＭＬ文書生成装置３は、この図１４のＨＴＭＬ文書を取得して、図６に示される事前処理を行う。この図６のＳ１において、図１４のＨＴＭＬ文書は、図１５の構造木を作成する。この図１５の構造木は、図６のＳ２即ち図１２のフローチャートにおいて、以下のように処理される。
【００６９】
この図１２における▲１▼−Ｓ２０１では、処理基準はルートになっている。このルートの直下には、未処理のノードである“ＴＡＢＬＥ”のノードがある。このため、処理は▲１▼−Ｓ２０２へ進む。この▲１▼−Ｓ２０２において、“ＴＡＢＬＥ”のノードが、処理対象ノードに設定される。
【００７０】
次の▲１▼−Ｓ２０３では、ＨＴＭＬ文書生成装置３は、“ＴＡＢＬＥ”が構造タグであるので、処理を▲１▼−Ｓ２０４へ進める。▲１▼−Ｓ２０４では、ＨＴＭＬ文書生成装置３は、“ＴＡＢＬＥ”のノードが直下のノードを持つので、処理を▲１▼−Ｓ２０６へ進める。
【００７１】
図１５に示されるように、この“ＴＡＢＬＥ”タグの直下には、１つの“ＴＨ”のノードと３つの“ＴＲ”のノードがある。これら“ＴＨ”及び“ＴＲ”は、構造タグである。このため、▲１▼−Ｓ２０６において、ＨＴＭＬ文書生成装置３は、処理を▲１▼−Ｓ２０７へ進める。
【００７２】
▲１▼−Ｓ２０７では、ＨＴＭＬ文書生成装置３は、この▲１▼の階層における処理対象ノードの“ＴＡＢＬＥ”のノードを、▲２▼の階層における処理基準として、この▲２▼の階層の図１２の処理を再帰的に呼び出す。▲２▼−Ｓ２０１では、ＨＴＭＬ文書生成装置３は、処理基準である“ＴＡＢＬＥ”のノードの直下に未処理のノードがある場合には、処理を▲２▼−Ｓ２０２へ進める。図１５に示されるように、処理基準である“ＴＡＢＬＥ”のノードの直下には、１つの“ＴＨ”のノードと３つの“ＴＲ”のノードがある。但し、図示の都合上、“ＴＨ”のノード，及び，３つの“ＴＲ”のノードのうちの先頭のもの以外の２つの“ＴＲ”のノードは、それらの直下のノードが詳細に記載されていない。このため、“ＴＨ”のノードに対する処理が既に終了し、３つの“ＴＲ”のノードが未処理の状態を想定して、以下、説明する。
【００７３】
▲２▼−Ｓ２０２では、ＨＴＭＬ文書生成装置３は、３つの“ＴＲ”のノードのうちの先頭の１つを、処理対象ノードとする。次の▲２▼−Ｓ２０３では、ＨＴＭＬ文書生成装置３は、処理対象ノードのタグ“ＴＲ”が構造タグであると判別して、処理を▲２▼−Ｓ２０４へ進める。この処理対象ノードである“ＴＲ”のノードは、その直下に３つの“ＴＤ”のノードを持っている。このため、▲２▼−Ｓ２０４では、ＨＴＭＬ文書生成装置３は、処理を▲２▼−Ｓ２０６へ進める。なお、これら３つの“ＴＤ”は、要素タグである。このため、▲２▼−Ｓ２０６では、ＨＴＭＬ文書生成装置３は、処理を▲２▼−Ｓ２０７へ進める。
【００７４】
▲２▼−Ｓ２０７では、ＨＴＭＬ文書生成装置３は、この▲２▼の階層における処理対象ノードの“ＴＲ”のノードを、さらに一段下の▲３▼の階層における処理基準として、この▲３▼の階層の図１２の処理を再帰的に呼び出す。第１回目の▲３▼−Ｓ２０１では、ＨＴＭＬ文書生成装置３は、処理基準である“ＴＲ”のノードの直下に未処理のノードがあると判別して、処理を▲３▼−Ｓ２０２へ進める。
【００７５】
▲３▼−Ｓ２０２では、ＨＴＭＬ文書生成装置３は、３つの“ＴＤ”のノードのうちの先頭の１つを、処理対象ノードとする。次の▲３▼−Ｓ２０３では、ＨＴＭＬ文書生成装置３は、処理対象ノードが要素タグであると判別して、処理を▲３▼−Ｓ２０４へ進める。この処理対象ノードである“ＴＤ”のノードは、直下に“！ＦＯＲＥＡＣＨ”のノードを有している。このため、▲３▼−Ｓ２０４では、ＨＴＭＬ文書生成装置３は、処理を▲３▼−Ｓ２０６へ進める。
【００７６】
この処理対象ノードは、その直下に、第１種の拡張タグ“！ＦＯＲＥＡＣＨ”のノードのみを有していて、構造タグ又は要素タグのノードを有していない。このため、▲３▼−Ｓ２０６では、ＨＴＭＬ文書生成装置３は、処理を▲３▼−Ｓ２０８へ進める。
【００７７】
▲３▼−Ｓ２０８では、ＨＴＭＬ文書生成装置３は、処理対象ノードの直下のノードが第１種の拡張タグのノードのみであるかどうか、判別する。そして、ＨＴＭＬ文書生成装置３は、処理対象ノードの直下のノードが第１種の拡張タグのノードのみである場合には、処理を▲３▼−Ｓ２０９へ進め、それ以外の場合には処理を▲３▼−Ｓ２０１へ戻す。なお、処理対象ノードである“ＴＤ”のノードの直下のノードは、第１種の拡張タグ“！ＦＯＲＥＡＣＨ”のノードのみであるので、処理は▲３▼−Ｓ２０９へ進む。
【００７８】
▲３▼−Ｓ２０９では、ＨＴＭＬ文書生成装置３は、処理対象ノードである“ＴＤ”のノードの直下にある“！ＦＯＲＥＡＣＨ”のノードを、処理対象ノードである“ＴＤ”のノードの位置に移動させるとともに、この処理対象ノード自体を削除する。この処理により、図１５の構造木は、図１６に示されるように変換される。そのうえで、処理は、▲３▼−Ｓ２０１へ戻る。
【００７９】
この段階において、“！ＦＯＲＥＡＣＨ”のノードは処理済になっているが、この“！ＦＯＲＥＡＣＨ”のノードの並びの２つの“ＴＤ”のノードは、まだ未処理である。このため、▲３▼−Ｓ２０１では、ＨＴＭＬ文書生成装置３は、処理を▲３▼−Ｓ２０２へ進める。
【００８０】
▲３▼−Ｓ２０２では、ＨＴＭＬ文書生成装置３は、２つの“ＴＤ”のノードのうちの先頭の１つを、処理対象ノードとする。この処理対象ノードの“ＴＤ”は、要素タグである。このため、▲３▼−Ｓ２０３では、ＨＴＭＬ文書生成装置３は、処理を▲３▼−Ｓ２０４へ進める。なお、処理対象ノードである“ＴＤ”のノードは、直下のノードを有していない。このため、▲３▼−Ｓ２０４では、ＨＴＭＬ文書生成装置３は、処理を▲３▼−Ｓ２０５へ進める。
【００８１】
▲３▼−Ｓ２０５では、ＨＴＭＬ文書生成装置３は、処理対象ノードを削除した後、処理を▲３▼−Ｓ２０１へ戻す。即ち、処理対象ノードである“ＴＤ”のノードが削除された後に、処理は▲３▼−Ｓ２０１へ戻る。この▲３▼−Ｓ２０１以降の処理において、処理基準である“ＴＲ”のノード直下の最後の“ＴＤ”のノードが、同様に削除される。すると、図１７の構造木が得られる。この図１７に示されるように、３つの“ＴＲ”のノードのうちの先頭のもの（処理基準）は、その直下に、“！ＦＯＲＥＡＣＨ”のノードのみを有している。この“！ＦＯＲＥＡＣＨ”のノードは、上記の如く既に処理済である。このため、ＨＴＭＬ文書生成装置３は、▲３▼−Ｓ２０１において、処理基準の直下に未処理のノードがないと判別して、処理を▲３▼−Ｓ２１０へ分岐させる。
【００８２】
▲３▼−Ｓ２１０において、ＨＴＭＬ文書生成装置３は、処理基準の直下のノードが第１種の拡張タグのノードのみであるかどうか、判別する。そして、ＨＴＭＬ文書生成装置３は、処理基準の直下のノードが第１種の拡張タグのノードのみである場合には、処理を▲３▼−Ｓ２１１へ進め、それ以外の場合には▲３▼の階層の処理を終了させる。図１７の構造木に示されるように、３つの“ＴＲ”のノードのうちの先頭のもの（処理基準）は、その直下に、第１種の拡張タグ“！ＦＯＲＥＡＣＨ”のノードのみを有している。このため、ＨＴＭＬ文書生成装置３は、▲３▼−Ｓ２１０において処理を▲３▼−Ｓ２１１へ進める。
【００８３】
▲３▼−Ｓ２１１では、ＨＴＭＬ文書生成装置３は、処理基準の直下の第１種の拡張タグのノードを、処理基準の位置に移動させるとともに、当該処理基準自体を削除する。そのうえで、ＨＴＭＬ文書作成装置３は、処理（▲３▼の階層の処理）を終了させる。図１７の構造木の例では、“！ＦＯＲＥＡＣＨ”のノードが、処理基準である“ＴＲ”のノードの位置に移動し、この処理基準である“ＴＲ”のノード自体が削除され、図１８の構造木が得られる。そして、▲３▼の階層の処理が終了する。
【００８４】
この▲３▼の階層の処理が終了するということは、一段階上の階層における▲２▼−Ｓ２０７の処理が終了することに相当する。従って、処理は▲２▼−Ｓ２０１へ移行する。図１８の構造木の例では、▲２▼の階層において、“ＴＡＢＬＥ”のノードが処理基準になっている。この処理基準の“ＴＡＢＬＥ”のノードの直下の“！ＦＯＲＥＡＣＨ”のノードは、上記の如く処理済となっている。しかし、“！ＦＯＲＥＡＣＨ”のノードの並びの２つの“ＴＲ”のノードは未処理である。
【００８５】
そして、ＨＴＭＬ文書生成装置３は、これら未処理のノードを順次処理することにより、図１８の構造木を、図１９に示されるように変換する。そのうえで、ＨＴＭＬ文書生成装置３は、この▲２▼の階層の処理を終了する。
【００８６】
この▲２▼の階層の処理が終了することは、一段階上の階層における▲１▼−Ｓ２０７の処理が終了することに相当する。従って、処理は▲１▼−Ｓ２０１へ移行する。この▲１▼の階層では、ルートが処理基準になっている。図１９の例では、ルートの直下には“ＴＡＢＬＥ”のノードのみが図示されている。この“ＴＡＢＬＥ”のノードは、上記の如く処理済であるので、処理は▲１▼−Ｓ２１０へ分岐する。この“ＴＡＢＬＥ”のノードの直下には、第１種の拡張タグのノード以外のものもある（▲１▼−Ｓ２１０：Ｎｏ）。従って、▲１▼の階層の処理が終了する。この▲１▼の階層の処理が終了することは、図６のＳ２の処理が終了することに相当する。
【００８７】
この図１９の構造木は、図６のＳ３において図１３のＨＴＭＬ文書に変換される。後において説明するが、Ｓ３において得られたＨＴＭＬ文書が識別用拡張タグである<!WLFONT>を含んでいない場合には、図６のＳ４乃至Ｓ６の処理の結果得られるＨＴＭＬ文書は、Ｓ３において得られたＨＴＭＬ文書と同内容になる。従って、事前処理である図６の処理の結果、図１３と同じＨＴＭＬ文書が得られる。
【００８８】
この事前処理後、ＨＴＭＬ文書生成装置３は、データベース装置２におけるデータベース２２を参照しながら、ＨＴＭＬ文書中の拡張タグを処理し、この拡張タグを含まないＨＴＭＬ文書を生成する。この図１３のＨＴＭＬ文書に基づいて生成処理が行われる際に、データベース中のｔｔの値が、[[columnName->"氏名"], [columnName->"住所"], [columnName->"年齢"]]であり、ｓｓの値が、[[name->"鈴木", address->"杉並区", age->"３５"], [name->"田中", address->"横浜市", age->"２４"]]である場合には、図２０のＨＴＭＬ文書が生成される。
【００８９】
以下、事前処理を示す図６におけるＳ５の処理について詳述する。このＳ５において、ＨＴＭＬ文書生成装置３は、Ｓ４において作成した構造木を、図２１のフローチャートに従って処理する。以下、Ｓ４において図１０の構造木が得られた場合の例を用いて、図２１のフローチャートについて説明する。
【００９０】
この図２１のフローチャート開始後最初のＳ５０１では、ＨＴＭＬ文書生成装置３は、構造木のルートの直下に未処理のノードがあるかどうか判別する。そして、ＨＴＭＬ文書生成装置３は、未処理のノードがある場合には、処理をＳ５０２へ進め、それ以外の場合には処理を終了させる。図１０の構造木におけるルートは、その直下に、４つのノードを有している。即ち、ルートの直下には、識別用拡張タグ“！ＷＬＦＯＮＴ”のノード，第２種拡張タグ“！ＲＥＰＬＡＣＥ”のノード，テキスト“ｙｅｎ”のノード，及び，識別用拡張タグ“！ＷＬＦＯＮＴ”のノードが、夫々接続されている。図２１のフローチャート開始の際の初期状態では、ルートの直下の各ノードはいずれも未処理である。このため、ＨＴＭＬ文書作成装置３は、処理をＳ５０２へ進める。
【００９１】
Ｓ５０２では、ＨＴＭＬ文書生成装置３は、未処理のノードのうちの先頭の１つを処理対象ノードとして設定する。図１０の構造木におけるルートの直下の４つのノードがいずれも未処理であれば、先頭の識別用拡張タグ“！ＷＬＦＯＮＴ”のノードが、処理対象ノードになる。
【００９２】
次のＳ５０３では、ＨＴＭＬ文書生成装置３は、処理対象ノードが識別用拡張タグ“！ＷＬＦＯＮＴ”のノードであるかどうか、判別する。そして、ＨＴＭＬ文書生成装置３は、処理対象ノードが識別用拡張タグ“！ＷＬＦＯＮＴ”のノードである場合には、処理をＳ５０４へ進めるが、それ以外の場合には処理をＳ５０１へ戻す。
【００９３】
Ｓ５０４では、処理対象ノードの直下のノードのうちのテキストのノードを削除する。処理対象ノードが“！ＷＬＦＯＮＴ”タグのノードであれば、その直下のテキスト“ａ”のノードが削除される。すると、“！ＷＬＦＯＮＴ”のノードの直下には、タグ“ＥＭ”のノードのみが残される。
【００９４】
次のＳ５０５では、処理対象ノードの直下のノードを処理対象ノードの位置へ移動し、処理対象ノードを削除する。そして、ＨＴＭＬ文書生成装置３は、処理をＳ５０１へ戻す。このＳ５０５の処理により、“！ＷＬＦＯＮＴ”のノードの直下に残った“ＥＭ”のノードは、“！ＷＬＦＯＮＴ”のノードの位置へ移動する。そして、“！ＷＬＦＯＮＴ”のノード自体は、削除される。その結果、構造木は、そのルートの直下に、“ＥＭ”のノード，“！ＲＥＰＬＡＣＥ”のノード，“ｙｅｎ”のノード，及び“！ＷＬＦＯＮＴ”のノードが接続された状態になる。そのうえで、処理はＳ５０１へ戻る。
【００９５】
以降の処理において、“ＥＭ”のノードは、処理済とみなされ、“！ＲＥＰＬＡＣＥ”のノード，“ｙｅｎ”のノード，及び，“！ＷＬＦＯＮＴ”のノードは、未処理とみなされる。このため、２回目のＳ５０１では、未処理のノードがあると判別されて、処理はＳ５０２へ進む。そして、Ｓ５０２では、“！ＲＥＰＬＡＣＥ”のノードが、処理対象ノードになる。すると、Ｓ５０３では、ＨＴＭＬ文書生成装置３は、処理対象ノードが“！ＷＬＦＯＮＴ”のノードではないと判別して、処理をＳ５０１へ戻す。
【００９６】
以降の処理において、“ＥＭ”のノード，及び“！ＲＥＰＬＡＣＥ”のノードは、処理済とみなされ、“ｙｅｎ”のノード，及び，“！ＷＬＦＯＮＴ”のノードは、未処理とみなされる。このため、３回目のＳ５０１では、未処理のノードがあると判別されて、処理はＳ５０２へ進む。そして、Ｓ５０２では、“ｙｅｎ”のノードが、処理対象ノードになる。すると、Ｓ５０３では、ＨＴＭＬ文書生成装置３は、処理対象ノードが“！ＷＬＦＯＮＴ”のノードではないと判別して、処理をＳ５０１へ戻す。
【００９７】
以降の処理において、最後の“！ＷＬＦＯＮＴ”のノードのみが未処理とみなされる。このため、ＨＴＭＬ文書生成装置３は、４回目のＳ５０１において処理をＳ５０２へ進め、このＳ５０２において“！ＷＬＦＯＮＴ”のノードを処理対象ノードとして設定する。
【００９８】
そして、ＨＴＭＬ文書生成装置３は、このように処理対象ノードが“！ＷＬＦＯＮＴ”のノードである（Ｓ５０３：Ｙｅｓ）ため、この処理対象ノードの直下のテキスト“ａ”のノードを削除する（Ｓ５０４）。さらに、ＨＴＭＬ文書生成装置３は、残された“／ＥＭ”のノードを“！ＷＬＦＯＮＴ”のノードの位置へ移動し、この“！ＷＬＦＯＮＴ”のノード自体を削除する（Ｓ５０５）。すると、図１１の構造木が得られる。そして、ＨＴＭＬ文書生成装置３は、処理をＳ５０１へ戻す。この５回目のＳ５０１では、ルートの直下に未処理のノードがないので、ＨＴＭＬ文書生成装置３は、処理を終了する。
【００９９】
この図２１の処理が終了することは、図６のＳ５の処理が終了することに相当する。この図６のＳ５の処理により得られた図１１の構造木は、図６のＳ６において図２４のＨＴＭＬ文書に変換される。従って、事前処理である図６の処理の結果、作成者が意図した通りのＨＴＭＬ文書が生成される。
【０１００】
この事前処理後、ＨＴＭＬ文書生成装置３は、データベース装置２におけるデータベース２２を参照しながら、ＨＴＭＬ文書中の拡張タグを処理し、これら拡張タグを含まないＨＴＭＬ文書を生成する。この生成処理の際に、データベース２２におけるｘの値が５００であれば、この図２４のＨＴＭＬ文書は、図２５のＨＴＭＬ文書に変換される。
【０１０１】
上述のように、ＨＴＭＬ文書の作成者は、第２種の拡張タグが文字飾りのタグとともに使用された図２４のようなＨＴＭＬ文書を作成したい場合には、識別用拡張タグ対及び任意のテキスト“<!WLFONT>a<!/WLFONT >”を用いて図２のようなＨＴＭＬ文書を、エディタ装置１に入力する。
【０１０２】
すると、エディタ装置１は、図２のＨＴＭＬ文書を図３のように変換してしまうが、ＨＴＭＬ文書生成装置３は、この図３のＨＴＭＬ文書を正しく認識して、図２５のＨＴＭＬ文書を生成することができる。
【０１０３】
【発明の効果】
以上のように構成された本発明のＨＴＭＬ文書生成プログラム，ＨＴＭＬ文書生成プログラムを格納したコンピュータ可読媒体，ＨＴＭＬ文書生成方法，及びＨＴＭＬ文書生成装置によれば、ＨＴＭＬエディタが、拡張タグを含んだＨＴＭＬ文書を、作成者の意図に反して変換してしまったとしても、変換されたＨＴＭＬ文書は作成者の意図した通りに認識される。このため、拡張タグを含んだＨＴＭＬ文書は、正しく処理されて、この拡張タグの指定に従って、該拡張タグを含まないＨＴＭＬ文書が作成者の意図した通りに生成される。
【図面の簡単な説明】
【図１】  本発明の一実施形態によるシステム構成図
【図２】  作成者が入力するＨＴＭＬ文書例
【図３】  エディタ装置が変換したＨＴＭＬ文書例
【図４】  構造タグ及び要素タグのテーブルを示す図
【図５】  第１種拡張タグのテーブルを示す図
【図６】  ＨＴＭＬ文書生成装置による事前処理を示すフローチャート
【図７】  図２６に基づいて作成された構造木
【図８】  図７から変換された構造木
【図９】  図８から変換された構造木
【図１０】  図３に基づいて作成された構造木
【図１１】  図１０から変換された構造木
【図１２】  図６のＳ２の処理を示すフローチャート
【図１３】  作成者が入力するＨＴＭＬ文書例
【図１４】  エディタ装置が変換したＨＴＭＬ文書例
【図１５】  図１４に基づいて作成された構造木
【図１６】  図１５から変換された構造木
【図１７】  図１６から変換された構造木
【図１８】  図１７から変換された構造木
【図１９】  図１８から変換された構造木
【図２０】  ＨＴＭＬ生成装置により生成されたＨＴＭＬ文書例
【図２１】  図６のＳ５の処理を示すフローチャート
【図２２】  作成者が入力するＨＴＭＬ文書例
【図２３】  ＨＴＭＬ生成装置により生成されたＨＴＭＬ文書例
【図２４】  作成者が入力するＨＴＭＬ文書例
【図２５】  ＨＴＭＬ生成装置により生成されたＨＴＭＬ文書例
【図２６】  エディタ装置が変換したＨＴＭＬ文書例
【図２７】  エディタ装置が変換したＨＴＭＬ文書例
【符号の説明】
１      エディタ装置
２      データベース装置
２２    データベース
３      ＨＴＭＬ文書生成装置
４      ＷＷＷサーバ装置
５      ブラウザ装置
【図１】
0004071462.tif 000002
【図２】
0004071462.tif 000003
【図３】
0004071462.tif 000004
【図４】
0004071462.tif 000005
【図５】
0004071462.tif 000006
【図６】
0004071462.tif 000007
【図７】
0004071462.tif 000008
【図８】
0004071462.tif 000009
【図９】
0004071462.tif 000010
【図１０】
0004071462.tif 000011
【図１１】
0004071462.tif 000012
【図１２】
0004071462.tif 000013
【図１３】
0004071462.tif 000014
【図１４】
0004071462.tif 000015
【図１５】
0004071462.tif 000016
【図１６】
0004071462.tif 000017
【図１７】
0004071462.tif 000018
【図１８】
0004071462.tif 000019
【図１９】
0004071462.tif 000020
【図２０】
0004071462.tif 000021
【図２１】
0004071462.tif 000022
【図２２】
0004071462.tif 000023
【図２３】
0004071462.tif 000024
【図２４】
0004071462.tif 000025
【図２５】
0004071462.tif 000026
【図２６】
0004071462.tif 000027
【図２７】
0004071462.tif 000028