(57)【要約】【課題】本発明の課題は、JSPコンテナや実行用のデータが存在しない環境でJSPからHTMLを生成することを可能とすること、及び、生成したHTMLに対し文法の妥当性検証やアクセシビリティの検証を、チェックツールを用いて行えるようにすることにある。【解決手段】前記課題は、JSPで扱われるJSPタグやカスタムタグと、HTMLタグの対応を定義したタグ変換ルールを用意し、それを参照することでタグや属性毎にJSPタグやカスタムタグをHTMLへ変換してHTMLを生成することによって達成される。【選択図】  図１
2008176520.tif 000002
【特許請求の範囲】
【請求項１】
主プログラムのソースファイルを副プログラムから動的に生成するための技術について、副プログラム内で扱われる言語特有のタグに対し、それぞれ対応する主プログラムのタグを定義したタグ変換ルールを保持し、入力された副プログラムのソースファイルに対して、保持しているタグ変換ルールの定義を参照し、副プログラムのタグを主プログラムのタグにそれぞれ変換することで主プログラムのソースファイルを出力する、タグ変換の方法及びこの方法を使用したタグ変換装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、WebアプリケーションにおいてHTML(HyperText Markup Language)を動的に生成する手段であるJSP(Java（登録商標）Server Pages)に対し、JSPコンテナを介さずにHTMLへの変換を行う技術に関したものである。
【背景技術】
【０００２】
一般にWebページの記述言語として用いられるHTMLに対して、文法の妥当性やアクセシビリティを検証する場合、チェックツールを用いてHTML文書を機械的に検証する方法が広く活用されている。
【０００３】
HTMLは静的コンテンツを記述するための言語であるため、この記述内容を動的に変化させたいWebアプリケーションでは、プログラムからHTMLを動的に生成するために、非特許文献１のJSPという技術が広く用いられている。Webアプリケーション開発者の成果物はJSPのソースファイルであるため、JSPのソースファイルに対してHTML文法の妥当性やアクセシビリティの検証を行うことが望まれるが、JSPはHTMLタグ以外にロジックを記述するためのJSPタグやロジックをタグとして定義したカスタムタグを含むため、HTMLの検証に用いられるチェックツールではHTMLタグ以外のこれらのタグを判別できず、正しい検証結果を得ることができない。JSPから正しい検証結果を得られるHTMLのみを取得するためには、実際にシステムを動作させる際と同様に、JSPコンテナでコンパイル・実行してHTMLを出力する必要がある。
【０００４】
【非特許文献１】http://java（登録商標）sun.com/products/jsp/index.jsp
【発明の開示】
【発明が解決しようとする課題】
【０００５】
JSPの文法の妥当性やアクセシビリティの検証は、プログラミング工程（コーディングが完了した時点）で実施するのが望ましい。しかしながら現状では、チェックツールによる検証を行うためにはJSPをコンパイル・実行してHTMLを取得しなければならないため、JSPをコンパイル・実行するJSPコンテナや、実行時に必要なデータが必要となる。これらは本来テスト工程で使用するべきものであるため、プログラミング工程では使用する必要が無いはずのものである。逆に、文法の妥当性やアクセシビリティの検証をテスト工程で実施すると、検証結果で問題が発生した場合に、プログラミング工程まで作業が後戻りしてしまうこととなる。
【０００６】
また、JSPをコンパイル・実行してHTMLを取得する場合、通常のテスト工程と同等の作業が発生することとなるため、検証作業に多大な工数が掛かってしまう。
【０００７】
またJSPには分岐処理が含まれることがあるため、１度の実行で出力したHTMLの内容には分岐処理で当てはまった方の内容しか出力されない場合がある。この場合１つのJSPの出力内容を１つのHTMLで十分に満たすことができないため、複数のデータを用意することによって複数のHTMLを取得する必要がある。このため１つのJSPに対してHTMLの取得作業と検証作業を複数回実施しなければいけないため、これも工数の増加に繋がることとなる。本発明はこの課題を解決することを目的とする。
【課題を解決するための手段】
【０００８】
JSPソースをHTMLに変換する装置とJSP特有のJSPタグやカスタムタグをHTMLに変換するための変換ルールの定義を用意する。JSPソース読み込み、そこに記述されているタグをひとつずつ判別し、JSPタグやカスタムタグであるのか、もしくはHTMLタグであるのかを判断する。変換ルールに定義されたJSPタグやカスタムタグである場合は、これらのタグを対応するHTMLタグに変換して出力する。HTMLタグである場合はそのまま出力する。こうすることで、JSPに含まれるロジック部分は処理をせずに、タグだけを機械的に全てHTMLタグに変換をすることで、HTMLの文法の妥当性を検証するツールや、アクセシビリティを検証するツールが読み込むことのできるHTMLを生成する。
【発明の効果】
【０００９】
この方法を用いることでHTMLを取得するためにJSPをコンパイル・実行する必要が無くなり、JSPコンテナや実行に必要なデータを用意する必要も無くなる。このため文法の妥当性やアクセシビリティの検証をプログラミング工程で実施することが出来るようになる。この方法で出力されるHTMLは必ずしもJSPをコンパイル・実行して出力したHTMLと同じにはならないが、基本的なタグの親子関係などは崩されることが無いため、検証結果についてはJSPをコンパイル・実行して出力したHTMLとほぼ同一の結果を得ることができる。
【００１０】
逆にこの方法で取得したHTMLには、JSPを実行して取得したHTMLでは分岐処理によって出力されなくなってしまうタグについてもすべてのパターンで出力されているため、１つのJSPが出力する内容を十分に満たしている。このため１つのJSPについてHTMLの取得作業と検証作業をそれぞれ１回ずつ実施すれば良いことになり、コンパイル・実行してHTMLを取得する方法に対して大幅な工数削減が期待できる。
【発明を実施するための最良の形態】
【００１１】
図１は本発明におけるタグ変換装置１０１と既存のHTML文法チェックツール１０５やアクセシビリティチェックツール１０６を組み合わせた概念図である。タグ変換装置１０１はまずJSPソース１０２を読み込み、JSPソース１０２から図２に示すようなJSP特有のタグを見つけ出す。これらのタグは常に開始が「<」で終端が「>」（または「/>」）である。タグ２０１で示すようにタグは原則として要素名と属性で構成され、さらに属性は属性名と属性値に分けられる。要素名は１つのタグに１つだけだが、属性はタグ２０２のように１つのタグに複数存在する場合や、タグ２０３のように存在しない場合もある。またこれらのタグとは別に、JSPには図３に示すようなスクリプトを記述するためのタグが存在し、これらには要素名や属性といったものが存在しないが、本発明では特別な文字列を要素名として扱うことで対応する。例としてタグ３０１の場合は%@を、タグ３０２の場合は%=を、タグ３０３の場合は%をそれぞれ要素名として扱うことでタグを判別できるようにする。また、タグ２０４のような終了タグについては、本発明では/を含めて要素名として扱う。
【００１２】
これらのタグの判断にはタグ変換ルール１０４が参照される。タグ変換ルール１０４にはJSP特有のタグと、HTMLタグとの対応を定義しておく。この定義を元に見つけ出したタグをHTMLタグへ変換してHTMLファイル１０３に出力する。また、タグの中の属性についても同様に、個々の属性についてタグ変換ルール１０４を参照して変換を行う。なおJSP特有のタグに該当しない部分は未変換でHTMLファイル１０３に出力する。こうして出力されたHTMLファイル１０３は通常Webコンテンツ用に作成されるHTMLファイルと同様に、文法チェッカ１０５やアクセシビリティチェッカ１０６を実行することで、文法の妥当性検証結果１０７やアクセシビリティ検証結果１０８を取得することができる。こうして取得した検証結果は、そのJSPソース１０２に対する検証結果と同等であると言える。
【００１３】
図４はタグ変換ルール１０４の構成を示した図である。タグ変換ルールには要素欄４０１、属性欄４０２、変換値欄４０３を持つ。要素欄４０１にはJSPタグやカスタムタグの要素名が格納される。属性欄４０２には要素毎に持つ属性名が格納される。変換値欄４０３には要素欄や属性欄に格納された要素名や属性名をHTMLに変換する場合にどう変換するかを示した値を格納する。要素名に対応した変換値欄４０３には対応するHTML要素名だけでなく、属性名や属性値も合わせて格納されることがある（４０５）。また変換後の値として何も出力しない場合にはそれを示す値（図４では例として−を表記）が格納される（４０４）。
【００１４】
図５はタグ変換装置１０１の構成について示した図である。タグ変換を実施するタグ変換プログラム５０５は、コンピュータ上の主記憶装置５０２に配置され、CPU５０３によって実行される。タグ変換プログラム５０５は、外部記憶装置５０４に格納されているJSPファイル５１０を決められた単位で読み取るファイル読み取り部５０６、外部記憶装置５０４にファイルやデータベースの形式で格納されているタグ変換ルール５１１を参照して変換対象のタグを変換するタグ変換部５０７、現在処理中の要素が何であるかを格納しておく処理要素格納部５０８、外部記憶装置５０４にHTMLファイル５１２を作成してそこにタグを出力するファイル出力部５０９で構成される。
【００１５】
図６はタグ変換装置１０１がひとつのタグに対して行う処理を示したフローチャートである。ここでは図７に示すJSPファイルを例としてタグ変換装置１０１の処理について説明する。なおタグ変換ルール５１１の内容は図４で示す内容になっているものとする。
【００１６】
まずタグ７０１に対して処理を行う場合、まず処理６０１でファイル読み取り部５０６はタグの要素名を読み取り、この要素名について処理６０２でタグ変換部５０７はタグ変換ルール５１１を参照して変換対象であるかどうかを判断する。タグ７０１の要素名html:htmlはタグ変換ルール５１１に要素として登録されているため、変換対象であると判断される。次に処理６０３で変換後の要素名が存在するかどうかを判断する。タグ変換ルール５１１には要素html:htmlの変換値はhtmlとなっており、変換後の要素名が存在する。変換後の要素名が存在する場合、処理６０４でまず変換前の要素名html:htmlを処理要素保存部５０８に格納する。その後処理６０５で対応するHTML要素名htmlに変換し、処理６０６でファイル出力部５０９は変換後の要素名を出力する。その後処理６０９で要素名の後がタグの終端であるかどうかを判断する。タグ７０１は要素名の後がタグの終端であるため、処理６１０でファイル出力部５０９はタグの終端を出力してこのタグに対する処理を終了する。その後処理６１９でファイルの終端であるかどうかを判断し、ファイルの終端ではないため次のタグを読み取る。
【００１７】
次にタグ７０２に対して処理を行う場合、まず処理６０１でファイル読み取り部５０６はタグの要素名を読み取り、この要素名について処理６０２でタグ変換部５０７はタグ変換ルール５１１を参照して変換対象であるかどうかを判断する。タグ７０２の要素名bodyはタグ変換ルール５１１に要素として登録されていないため、変換対象でないと判断される。要素名が変換対象で無い場合、処理６０７でファイル出力部５０９はタグの開始から終端までをそのまま出力する。その後処理６１９でファイルの終端であるかどうかを判断し、ファイルの終端ではないため次のタグを読み取る。
【００１８】
次にタグ７０３に対して処理を行う場合、まず処理６０１でファイル読み取り部５０６はタグの要素名を読み取り、この要素名について処理６０２でタグ変換部５０７はタグ変換ルール５１１を参照して変換対象であるかどうかを判断する。タグ７０３の要素名html:errorsはタグ変換ルール５１１に要素として登録されているため、変換対象であると判断される。次に処理６０３で変換後の要素名が存在するかどうかを判断する。タグ変換ルール５１１には要素html:errorsの変換値は−で表されており、変換後の要素名が存在しないとなっている。変換後の要素名が存在しないとは即ち対象のタグ全体に対して何も出力しないという意味であるため、処理６０８でタグの終端までを全て出力せずに飛ばす。その後処理６１９でファイルの終端であるかどうかを判断し、ファイルの終端ではないため次のタグを読み取る。
【００１９】
次にタグ７０４に対して処理を行う場合、まず処理６０１でファイル読み取り部５０６はタグの要素名を読み取り、この要素名について処理６０２でタグ変換部５０７はタグ変換ルール５１１を参照して変換対象であるかどうかを判断する。タグ７０４の要素名html:formはタグ変換ルール５１１に要素として登録されているため、変換対象であると判断される。次に処理６０３で変換後の要素名が存在するかどうかを判断する。タグ変換ルール５１１には要素html:formの変換値はformとなっており、変換後の要素名が存在する。変換後の要素名が存在する場合、処理６０４でまず変換前の要素名html:formを処理要素保存部５０８に格納する。その後処理６０５で対応するHTML要素名formに変換し、処理６０６でファイル出力部５０９は変換後の要素名を出力する。その後処理６０９で要素名の後がタグの終端であるかどうかを判断する。タグ７０４は要素名の後に属性が存在しタグの終端でないため、処理６１１でファイル読み取り部５０６は属性名を読み取り、この属性名について処理６１２でタグ変換部５０７はタグ変換ルール５１１と処理要素保存部５０８に格納されている要素名html:formを参照して変換対象であるかどうかを判断する。タグ７０４の属性名actionはタグ変換ルール５１１に要素html:formの属性として登録されていないため、変換対象でないと判断される。属性が変換対象で無い場合は、処理６１５でファイル出力部５０９は読み取った属性名をそのまま出力する。その後、処理６１６でファイル読み取り部５０６は属性actionの属性値を読み取り、処理６１７でファイル出力部５０９はその属性値を出力する。その後、処理６０９に戻り属性の後がタグの終端であるかどうかを判断する。タグ７０４は１つ目の属性の後がタグの終端でないため、次の属性methodに対する処理を同様の手順で行う。属性methodに対する処理が終了後、再び処理６０９に戻り属性の後がタグの終端であるかどうかを判断する。タグ７０４の属性はmethodが最後であり、ここでタグの終端となるため、処理６１０でファイル出力部５０９はタグの終端を出力してこのタグに対する処理を終了する。その後処理６１９でファイルの終端であるかどうかを判断し、ファイルの終端ではないため次のタグを読み取る。
【００２０】
次にタグ７０５に対して処理を行う場合、まず処理６０１でファイル読み取り部５０６はタグの要素名を読み取り、この要素名について処理６０２でタグ変換部５０７はタグ変換ルール５１１を参照して変換対象であるかどうかを判断する。タグ７０５の要素名html:textはタグ変換ルール５１１に要素として登録されているため、変換対象であると判断される。次に処理６０３で変換後の要素名が存在するかどうかを判断する。タグ変換ルール５１１には要素html:textの変換値はinput type=”text”となっており、変換後の要素名が存在する。変換後の要素名が存在する場合、処理６０４でまず変換前の要素名html:textを処理要素保存部５０８に格納する。その後処理６０５で対応するHTML要素名と属性のinput type=”text”に変換し、処理６０６でファイル出力部５０９は変換後の要素名と属性を出力する。その後処理６０９で要素名の後がタグの終端であるかどうかを判断する。タグ７０５は要素名の後に属性が存在しタグの終端でないため、処理６１１でファイル読み取り部５０６は属性名を読み取り、この属性名について処理６１２でタグ変換部５０７はタグ変換ルール５１１と処理要素保存部５０８に格納されている要素名html:textを参照して変換対象であるかどうかを判断する。タグ７０５の属性名propertyはタグ変換ルール５１１に要素html:textの属性として登録されているため、変換対象であると判断される。次に処理６１３で変換後の属性名が存在するかどうかを判断する。タグ変換ルール５１１には要素html:textの属性名propertyの変換値はnameとなっており、変換後の属性名が存在するため、処理６１４で対応する属性名nameに変換し、処理６１５でファイル出力部５０９は変換後の属性名を出力する。その後、処理６１６でファイル読み取り部５０６は属性propertyの属性値を読み取り、処理６１７でファイル出力部５０９は属性値を出力する。その後、処理６０９に戻り処理６０９で属性の後がタグの終端であるかどうかを判断する。タグ７０５は１つ目の属性の後がタグの終端でないため、次の属性styleClassに対する処理を同様の手順で行う。属性methodに対する処理が終了後、再び処理６０９に戻り属性の後がタグの終端であるかどうかを判断する。タグ７０４はさらに属性が続くため、次の属性errorClassに対する処理を行う。属性名errorClassは処理６１２で変換対象と判断され、処理６１３で変換後の属性名が存在するかどうかを判断するが、タグ変換ルール５１１には要素html:textの属性名errorClassの変換値は−で表されており、変換後の属性名が存在しないとなっている。変換後の属性名が存在しないとは即ち対象の属性に対しては何も出力しないという意味であり、この場合属性名だけでなく属性値も出力しないこととなるため、処理６１８で属性名と属性値を出力せずに飛ばす。その後、処理６０９に戻り属性値の後がタグの終端であるかどうかを判断する。タグ７０５の属性はerrorClassで最後であり、ここでタグの終端となるため、処理６１０でファイル出力部５０９はタグの終端を出力してこのタグに対する処理を終了する。その後処理６１９でファイルの終端であるかどうかを判断し、ファイルの終端ではないため次のタグを読み取る。
【００２１】
以上のような処理をファイルの終端までタグ単位に繰り返し、処理６１９でファイルの終端であると判断された場合にこのファイルに対する処理を終了する。
【００２２】
図８は図７で示したJSPファイルを図４のタグ変換ルールを元に変換した結果出力されるHTMLファイル１０３を示した図である。
【図面の簡単な説明】
【００２３】
【図１】本発明の範囲を含む利用形態の概念図である。
【図２】JSP特有のタグの一例を示す図である。
【図３】JSPでスクリプト記述に用いられるタグの一例を示す図である。
【図４】タグ変換ルールに定義される情報を表す図である。
【図５】タグ変換装置の構成図である。
【図６】タグ変換装置の処理順序を表すフロー図である。
【図７】入力に使用されるJSPファイルの一例を示す図である。
【図８】出力されるHTMLファイルの一例を示す図である。
【符号の説明】
【００２４】
１０１…タグ変換装置、１０２…JSPファイル、１０３…HTMLファイル、１０４…タグ変換ルール、１０５…HTML文法チェックツール、１０６…アクセシビリティチェックツール、１０７…HTML文法チェック結果、５０１…入出力装置、５０２…主記憶装置、５０３…CPU、５０４…外部記憶装置、５０５…タグ変換プログラム、５０６…ファイル読み取り部、５０７…タグ変換部、５０８…処理要素格納部、５０９…ファイル出力部、５１０…JSPファイル、５１１…タグ変換ルール、５１２…HTMLファイル。
【図１】
2008176520.tif 000003
【図２】
2008176520.tif 000004
【図３】
2008176520.tif 000005
【図４】
2008176520.tif 000006
【図５】
2008176520.tif 000007
【図６】
2008176520.tif 000008
【図７】
2008176520.tif 000009
【図８】
2008176520.tif 000010