JP2011065385A - マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム - Google Patents

マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム Download PDF

Info

Publication number
JP2011065385A
JP2011065385A JP2009214964A JP2009214964A JP2011065385A JP 2011065385 A JP2011065385 A JP 2011065385A JP 2009214964 A JP2009214964 A JP 2009214964A JP 2009214964 A JP2009214964 A JP 2009214964A JP 2011065385 A JP2011065385 A JP 2011065385A
Authority
JP
Japan
Prior art keywords
client
markup language
language document
document
side script
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009214964A
Other languages
English (en)
Inventor
Shosuke Suehiro
章介 末廣
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Access Co Ltd
Original Assignee
Access Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Access Co Ltd filed Critical Access Co Ltd
Priority to JP2009214964A priority Critical patent/JP2011065385A/ja
Publication of JP2011065385A publication Critical patent/JP2011065385A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Document Processing Apparatus (AREA)

Abstract

【課題】モバイル端末とwebサーバとの間に変換サーバが介在する場合にwebページ間の遷移に不具合が生じることを防止する。
【解決手段】変換サーバは、コンテンツサーバから受信したML文書がイベント属性付タグを含むフォームを含むかチェックする(S83)。そうであれば、イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、イベント属性としてのクライアントサイドスクリプトをフォームの送信内容に埋め込んで(S84)、クライアントへ送信する(S86)。変換サーバは、クライアントからフォームの選択結果情報とともにクライアントサイドスクリプトを受信したとき、選択結果情報に基づいて当該スクリプトを実行する(S90)。その結果、コンテンツサーバへ所定の要求および選択結果情報を送信する(S91)。
【選択図】図31

Description

本発明は、webサーバ(コンテンツサーバ)とクライアントとの間で、クライアントから要求されたマークアップ言語文書をwebサーバから受信して所定の変換を施してクライアントへ送信し、クライアントからの入力情報をwebサーバへ返信するマークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラムに関する。
近年、携帯電話端末や通信機能付きPDAなどの移動通信端末装置では、インターネット上のPC(パーソナルコンピュータ)用のwebサイトでのwebページを閲覧することができるようになってきている。移動通信端末装置を本明細書ではモバイル端末ともいう。
モバイル端末の表示画面のサイズは一律ではないが、通常、PC用の表示装置の表示画面に比べてその解像度(縦横画素数)は小さい。そのため、PC用webページをそのままモバイル端末の表示画面に表示させようとすると、表示されたwebページが垂直方向のみならず水平方向にも、画面から大きくはみ出し、水平、垂直両方向に頻繁にスクロール操作を行う必要が生じる。
このような問題に対して、特許文献1には、大サイズのwebページを解析してより小さいサイズのサブページに分割し、これをモバイル端末で閲覧する技術が開示されている。
特許文献2にはPC用のwebページを解析して無線端末での表示に適した情報に変換する技術が開示されている。
米国特許第7203901号公報 米国特許第7047033号公報
上記のような背景において本願出願人は特願2007−339878号として、PC用webページなどに対応する第1マークアップ言語(ML: Markup Language)文書を、比較的忠実にモバイル用webページなどに対応する第2マークアップ言語文書に自動的に変換することができる技術を提案した。
この技術を種々のアプリケーションへ応用していくことを検討していく中で、1つのフォーム内で複数の送信ボタンを用いるような特定の状況でwebページ間の遷移に不具合が生じることが判明した。この一因は、モバイル用webページを表示するモバイル端末に搭載されたブラウザがML文書に埋め込まれたクライアントサイドスクリプトを実行する機能を備えていないことにある。
本発明はこのような背景において、モバイル端末とwebサーバとの間に変換サーバが介在する場合に特定の内容のwebページについてwebページ間の遷移に不具合が生じることを防止することを目的とする。
本発明によるマークアップ言語文書変換装置は、クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信する手段と、受信したマークアップ言語文書がユーザに情報の入力を促すフォームを含み、かつ、このフォームが、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付タグを含むか否かをチェックする手段と、前記イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段と、この変更後のマークアップ言語文書をクライアントへ送信する手段と、前記クライアントから前記フォームに対する選択結果情報とともに前記フォームの送信内容に埋め込まれたクライアントサイドスクリプトを受信する手段と、前記クライアントから受信した選択結果情報に基づいて前記クライアントサイドスクリプトを実行する手段と、前記クライアントサイドスクリプトの実行により前記コンテンツサーバへ所定の要求および前記選択結果情報を送信する手段とを備えたものである。
変換サーバは、クライアントから要求されたマークアップ言語文書にイベント属性付タグを含むフォームが含まれているかどうかをチェックし、そうであれば、イベント属性付タグを、送信ボタンを構成するインプットタグに変更する。これにより、どの送信ボタンが押下されたかの情報をサーバに送信することができるようになる。かつ、各イベント属性付タグに付随したクライアントサイドスクリプトをフォームの送信内容に埋め込むことにより、クライアントで実行すべき処理を変換サーバで代行して実行することができるようになる。
特に、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段において、前記イベント属性付タグが複数存在する場合、前記フォームの送信内容において、各イベント属性付タグと当該クライアントサイドスクリプトとを対応づけておき、前記クライアントから前記クライアントサイドスクリプトを受信したとき、前記クライアントにおいていずれの送信ボタンが指示されたかに応じて、対応するクライアントサイドスクリプトを実行するようになすことができる。
また、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段において、前記コンテンツサーバから次に取得するマークアップ言語文書として前記クライアントから要求されたマークアップ言語文書と同じ文書を指定する。これにより、変換サーバにおいて、クライアントでの当該マークアップ言語文書の状態を再現してクライアントの処理を不具合なく代行することができる。
前記コンテンツサーバから受信したコンテンツを一時的に保存する手段と、前記クライアントから要求されたマークアップ言語文書と同じ文書を要求する際、前記一時的に保存したコンテンツを利用する手段とをさらに備えてもよい。これにより、特定の状況でのウェブページ間の遷移を不具合なく実現することができる。
本発明のマークアップ言語文書変換方法は、クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、受信したマークアップ言語文書がユーザに情報の入力を促すフォームを含み、かつ、このフォームが、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付タグを含むか否かをチェックするステップと、前記イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップと、この変更後のマークアップ言語文書をクライアントへ送信するステップと、前記クライアントから前記フォームに対する選択結果情報とともに前記フォームの送信内容に埋め込まれたクライアントサイドスクリプトを受信するステップと、前記クライアントから受信した選択結果情報に基づいて前記クライアントサイドスクリプトを実行するステップと、前記クライアントサイドスクリプトの実行により前記コンテンツサーバへ所定の要求および前記選択結果情報を送信するステップとを備えたものである。
本発明によるマークアップ言語文書変換装置は、他の見地によれば、クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信する手段と、受信したマークアップ言語文書を一時的に保存する手段と、前記受信したマークアップ言語文書に所定の変換を施してクライアントへ送信する手段と、クライアントから、前記マークアップ言語文書に対するユーザの操作に応じてクライアントサイドスクリプトを起動する処理要求を受けたとき、前記一時保存されたマークアップ言語文書に対して当該要求された処理を実行する手段と、前記コンテンツサーバへ当該要求された処理の実行結果を送信する手段とを備えたものである。
本発明はまた、マークアップ言語文書変換方法をコンピュータに実行させるコンピュータプログラムとしてのマークアップ言語文書変換プログラムとして把握することも可能である。
本発明によれば、PC用webページをモバイル用webページに変換する際に、モバイル用端末などにおける制約に起因して正常なwebページ間の遷移ができなくなることを未然に防止することができる。
本発明の実施の形態におけるマークアップ言語文書変換システムの全体の概略の構成を示した図である。 本発明における変換サーバの基本概念を説明するための図である。 図2に示したブラウザエンジンの内部構成を示す図である。 本発明の実施の形態における変換サーバの機能構成例を示す図である。 出願人のホームページの概略画面を示した図である。 図5に示したホームページの画面におけるブロック要素等の表示要素を示した図である。 ML文書を構成する表示要素をツリー形式で模式的に示した図である。 図6のPC用webページがモバイル用に変換されてモバイル画面上に表示される様子を模式的に示した図である。 PC用の第1のwebページから第2のwebページへ移行するwebページの遷移例を示した図である。 図9に示した第1のwebページおよび第2のwebページにそれぞれ対応したML文書(ソースファイル)を表した図である。 図9、図10に関連したクライアントとコンテンツサーバとの間のやりとりを表したシーケンス図である。 モバイル端末のクライアントとコンテンツサーバとの間に変換サーバが介在する場合のシーケンス図である。 図12における変換サーバによる変換結果画面を示した図である。 図13の変換結果画面に対応するML文書を示した図である。 図14におけるエラーを解消する方策を採用した場合のクライアント、変換サーバ、コンテンツサーバの間のシーケンス図である。 図15のシーケンス図における変換サーバによる変換結果ソースを示した図である。 1つのフォーム内に送信ボタンが複数存在する場合のPC用ブラウザでのwebページの画面遷移例を示した図である。 図17におけるwebページ450のML文書(2_1.php)を示した図である。 図17におけるwebページ460のML文書(2_2.php)とwebページ470のML文書(2_3.php)のそれぞれのML文書を示した図である。 図17のwebページの遷移に関連したクライアント(PC)とコンテンツサーバのやりとりを表したシーケンス図である。 図17のwebページに関するクライアントと変換サーバとコンテンツサーバの間のやりとりを表したシーケンス図である。 図21のシーケンス図における変換サーバによる変換結果画面を示した図である。 図22の画面の変換結果ソースを示した図である。 本発明の実施の形態によるクライアント、変換サーバとコンテンツサーバの間のやりとりを表したシーケンス図である。 図24のシーケンス図における変換サーバによる変換結果画面を示した図である。 図25の画面の変換結果ソースを示した図である。 図26のML文書の中にあるfollowing_jsパラメータの説明図である。 本発明の実施の形態における変換前ルールの一例を示した図である。 図24のシーケンス図に続く部分も含めたシーケンス図である。 図29で説明したような不具合を改良した場合のシーケンス図である。 本発明の実施の形態における変換サーバの主要な処理のフローチャートである。
以下、本発明の好適な実施の形態について図面を参照しながら詳細に説明する。
図1は、本実施の形態におけるマークアップ言語文書変換システムの全体の概略の構成を示している。
このシステムは、携帯電話端末や通信機能付きPDAなどの移動通信端末装置であるモバイル端末110と、webコンテンツを提供するwebサーバ120(コンテンツサーバとも呼ぶ。PC用、モバイル用を問わない。)と、PC用webコンテンツを提供するPC用webサーバ130と、本願発明のマークアップ言語文書変換装置に相当する変換サーバ150と、各サーバが接続されるインターネットのような通信ネットワーク140とにより構成される。
変換サーバ150は、PC用webページを構成するPC用マークアップ言語(ML)文書(すなわち第1のマークアップ言語文書)を、リアルタイムに、モバイル用webページを構成するモバイル用ML文書(すなわち第2のマークアップ言語文書)に変換するためのサーバであり、トランスコーダともいう。通信ネットワーク140には、モバイル用パケット通信網とこれをインターネットに接続するゲートウェイ(図示せず)を含みうる。webサーバ120はインターネットではなくモバイル用パケット通信網に接続されたサーバであってもよい。
モバイル端末110のユーザの操作に従い、モバイル端末110のwebブラウザはwebサーバ120に対して特定のwebページを要求(リクエスト)する(1)。このリクエストにはモバイル端末のwebブラウザからユーザエージェント(UA)と呼ばれる情報が含めて送信される。
webサーバ120は、受け取ったユーザエージェント情報に基づいて当該モバイル端末の機種IDを判別でき、これによりその機種の仕様情報を確認することができる。この仕様情報には、例えば、表示画面サイズや利用可能なメモリサイズ、一度に処理できるwebデータ量、サポートフォーマットなどが含まれる。このようなリクエストに対する応答(レスポンス)として、webサーバ120からモバイル端末110に対してリダイレクト(変換サーバ150のURLを含む)が返送される(2)。リダイレクトとは、webページを要求してきた端末がモバイル端末であることをそのユーザエージェント情報に基づいてwebサーバ120が認識したとき、アクセス先を自身から他の特定のサイト(ここでは変換サーバ150)へ移動させるためのレスポンスである。
モバイル端末110は、このリダイレクト情報を受けて、変換サーバ150へアクセスし、目的のPC用webページをリクエストする(3)。すなわち、このリクエストにはPC用webサーバ130のURLも含んでいる。
なお、リダイレクトによらず、モバイル端末110がモバイル用webページ内に組み込まれた変換サーバ150のURLから、または、URLの手動入力に基づいて、変換サーバ150へ直接アクセスしてもよい。
変換サーバ150は、このようなリクエストを受けると、指定されたPC用webサーバ130にアクセスして当該モバイル端末用に変換すべきPC用マークアップ言語文書で記述されたPC用webページをリクエストする(4)。さらに、PC用webサーバ130からそのレスポンスとして当該PC用webページのML文書を取得する(5)。変換サーバ150は、取得したPC用ML文書ならびに必要に応じて取得されるそのPC用ML文書に付随するデータおよびプログラムをレンダリングして、その結果に基づいてモバイル用ML文書を自動的に生成し、レスポンスとしてモバイル端末110へ返送する(6)。モバイル端末110は返送されたモバイル用ML文書を受信し、webブラウザにより処理し、必要な付随するデータおよびプログラムをさらに取得して、レンダリングを行い、その結果をモバイル用表示画面に表示する。「付随するデータおよびプログラム」とは、例えば、CSSなどのML文書から参照される修飾情報、画像(広告画像も含む)、JavaScript(登録商標)などのスクリプト、Flashなどのプラグイン用のデータ、等を含む。レンダリングとは、一般に数値データとして与えられた物体や図形に関する情報をデータ処理によって画像化することであり、本明細書では、HTMLなどのマークアップ言語文書をwebブラウザが読み込んで種々のタグを解釈し、各種の表示要素を表示画面上のどこにどのように表示するかを確定し、表示用の描画データを生成することをいう。レンダリングにはCSSの解析、JavaScriptなどの実行等も含む。
変換サーバ150は、好ましくは、リクエストを受けた端末の「一度に処理できるwebデータ量」に基づいて、これに対応する単位量毎に、モバイル用ML文書のデータを区切ることにより、ページ分割を行う。ページ分割の方法としては、任意の既存の手法を用いることができる。例えば、モバイル用ML文書内の各ページの最後に、次のページの内容にリンクした「次のページ」等の名称のアンカータグを設定する。なお、モバイル端末から変換サーバ150へのリクエストにもユーザエージェントが含まれており、変換サーバ150は、受け取ったユーザエージェント情報に基づいて当該モバイル端末の機種IDを判別でき、これによりその機種の仕様情報を確認することができる。そのために、変換サーバ150は、図示しないが、機種IDと機種の仕様情報との対応データを保持している。
図2は、本発明における変換サーバ150の基本概念を説明するための図である。変換サーバ150は、従来のwebブラウザのブラウザエンジンと同等の機能を有するブラウザエンジン20と、変換処理部161と、前処理部170とを含む。ブラウザエンジン20は、HTMLファイルのようなPC用ML文書10を読み込んで、レンダリングを行う。その前処理として、前処理部170が本発明に係る処理を実行する。その具体的な処理内容については後に詳述する。ブラウザエンジン20の処理結果として得られる、予め想定されている標準的な規定のサイズ(例えば縦600画素×横800画素)のPC表示画面上に配置される表示要素としての各パーツおよびその親子関係の情報である描画ドキュメントツリーや、そのパーツの占有領域(ブロック)の配置座標情報は変換処理部161へ伝えられる。変換処理部161は、パーツの親子関係や配置座標情報に基づいて、パーツの配置をモバイル端末での表示に適したモバイル用ML文書(例えばcHTML文書)を生成する。
図3は、図2に示したブラウザエンジン20の内部構成を示す。ブラウザエンジン20は、パーサ21、ページメーカ23、およびフォーマッタ25の各機能を有する。パーサ21は、表示対象のマークアップ言語(ML)文書10の論理的な構造を解釈し、その構造に関するドキュメントツリー22を生成する。ページメーカ23は、ドキュメントツリー22を基に、各タグで決められた表現形式(block, inline, table, list, itemなど)の情報を含むレイアウトツリー24を生成する。このレイアウトツリー24は、block, inline, tableなどがどのような順番に存在しているかを表している。但し、レイアウトツリー24は、まだ、これらの要素が画面のどこにどのような幅と高さで表示されるか、文字列がどこで折り返されるか、等のレイアウトに関する情報までは含んでいない。フォーマッタ25は、レイアウトツリー24を基に、既知の表示画面幅などの実際の表示画面に関する情報を用いてレイアウトを行う。すなわち、レイアウトツリー24を実際の表示画面に配置していき、文字の折り返しや、画面上の位置、幅、高さを決定する。この段階で、描画ドキュメントツリー(レンダリングツリーともいう)26が生成される。本実施の形態では、描画ドキュメントツリー26には各パーツのブロックの対角座標を含めている。
図4に、本実施の形態における変換サーバ150の機能構成例を示す。
トランスコーダエンジン160は、変換サーバ150の中枢部であり、ブラウザエンジン20と変換処理部161とを含む。ブラウザエンジン20の構成及び機能については上述したとおりである。変換処理部161は、ブラウザエンジン20の処理結果を用いてPC用ML文書をモバイル用ML文書に変換する処理を行う部位である。この具体的な処理手順については後述する。
コンテンツデータキャッシュ管理部158は、変換前のwebページのデータ(ML文書、JavaScript、CSS、Cookie、画像等)を一時的に保存するための装置である。
コンテンツ取得情報キャッシュ管理部157は、キャッシュのメタ情報として、各データの有効期限、対応URLなどの情報を一時的に保存するための装置である。
セッション管理部152は、webサイトにアクセスした時にセッションを管理するための装置である。ユーザが継続的にそのサイトを使えるように,そのユーザの状態をページに埋め込むことがwebの世界ではしばしばある。埋め込む場所はURLクエリ内やCookie内である。このような動作はセッションと呼ばれる。
トランスコーダフロントエンド162は、HTML埋め込み型のサーバサイドスクリプト言語を用いてCGI(Common Gateway Interface:コモン・ゲートウェイ・インタフェース)のような機能を実現するサーバサイドスクリプト処理部である。CGIとは、webサーバ上でユーザプログラムを動作させるための仕組みであり、そのユーザプログラムがサーバサイドスクリプトである。トランスコーダフロントエンド162は、端末においてユーザが何かをクリックしたり、ユーザに情報の入力を促すフォームフォームで何かを送信したときに、それに基づいてプログラムを実行し、新たなMLの記述を生成してブラウザに対して送信する。スクリプト言語としては本実施の形態ではPHP(PHP: Hypertext Preprocessor)を使用しているが、これに限るものではない。
前処理部170は、トランスコーダフロントエンド162およびトランスコーダエンジン160と接続され、後述するような本願発明に係る処理を実行する。
変換結果キャッシュ管理部156は、変換処理部161での変換結果であるモバイル用ML文書を一時的に保存する装置である。
httpd(Hyper Text Transfer Protocol Daemon)154はhttpデーモンと呼ばれるwebサーバのプログラムであり、ユーザからの要求に応じてサーバ内に蓄積されたコンテンツを送信したり、サーバサイドスクリプトを起動したりするためのものである。
なお、変換サーバ150のハードウェア構成は特に示さないが、CPU、主記憶装置、外部記憶装置、通信装置、各種入出力装置、等、既存のハードウェア構成により実現される。
以下、本実施の形態における変換サーバ150の動作を、具体的なwebページ例を示して説明する。
図5は出願人のホームページの概略画面を示している。
ML文書は各種のタグを含むテキストで記述されており、webページを構成する表示要素は主として「ブロック要素」と「インライン要素」に分類される。
ブロック要素は、文書の骨組みとなる要素で、例えば見出しや段落などである。このタイプの要素は与えられた領域の横幅一杯の領域を持ち、要素の前後には自動的に改行が入る。ブラウザの画面上で、ブロック要素の占有する領域は、文字列や画像等のある部分だけではなく、それらを含む矩形の(ブロック状の)領域である。具体的には、見出し(h1〜h6)、(意味)段落(p)、章/意味段落(div)、区切り線(hr)、引用(blockquote)、テーブル(table)等がブロック要素である。リスト(ul/ol/dl)及びその項目(li/dt/dd)もブロック要素である。
インライン要素は、文章中の一部として扱われる要素(例えばリンクや文字の強調など)である。このタイプの要素は行の一部として扱われるので、要素の前後には改行は入らない。具体的には、リンク/アンカー(a)、語・文節・文単位の強調(em/strong)、プログラムの出力結果(samp)、プログラムのソースコード(code)、引用元の明示(cite)、強制改行(br)等がインライン要素である。画像(img)もインライン要素に含まれる。
ブロック要素の中には、別のブロック要素やインライン要素が入り得る。インライン要素の中には、別のインライン要素が入りうる。インライン要素の中には、ブロック要素は入らない。
多くのタグは開始タグ<>と終了タグ</>から構成される。開始タグと終了タグの間の他のタグが含まれる、すなわち入れ子状態となりうる。入れ子関係にあるタグのうち外側のタグが「親」、内側がタグが「子」となる。
上述したように、ブラウザエンジン20はML文書を読み込んで、解釈し、レンダリングを行う。その結果として、図6に示すように、ブロック要素等の表示要素(すなわちパーツ)毎にその表示位置(配置座標)およびサイズ(矩形占有領域の対角座標)が求められる。図7にその様子をツリー形式で模式的に示す。この図における「ブロック」は図6に示した各表示要素のブロックに対応している。各ブロックには、(X1,Y1,X2,Y2)の形式の対角座標が定められている。(X1,Y1)は矩形状のブロックの左上角の座標であり、(X2,Y2)はブロックの右下角の座標である。
図7の描画ドキュメントツリーは、CSSを解釈した後の結果に基づくものである。ML文書中にJavaScriptが含まれ、それにより表示要素が決定される場合には、その実行結果をも反映したものである。
変換処理部161は、パーツの親子関係や座標情報に基づいて、パーツの配置をモバイル端末での表示に適して組み替える。この組み替えに際して、モバイル端末の表示画面では水平方向のスクロールは行わなくて済むようなwebページ構成が望ましい。そこで、複数のパーツを画面の横方向(水平方向)に羅列すると、モバイル端末の表示画面からはみ出してしまうような場合には、複数のパーツの横並びを縦並びに変更する。例えば、図6の上部のブロック211、ブロック221〜229、ブロック231〜237は、図8の位置300に示すように縦並びに配置を変更する。図8は図6のPC用webページがモバイル用に変換されてモバイル画面上に表示される様子を模式的に示した図である。実際には、図8の内容の全体がモバイル画面内に収まるわけではなく、縦方向にはページ送りおよび/またはスクロール操作により隠れた部分をモバイル画面上に移動させて見ることができる。横方向についてはページの幅全体がモバイル画面に収まることを想定している。
一つの画像(イメージ)の横幅がモバイル表示画面サイズより大きいものについては、その横幅がモバイル表示画面サイズに収まるように、全体の画像サイズを縮小するよう最適化する。図6の画像241(画像A)は最適化された画像241’(画像A’)として、図8の位置300の直下の位置340に配置されている。
図6のブロック251〜256は元々縦並びで、すべてモバイル表示画面サイズに収まるため、図8の位置340の直下の位置350に配置している。
図6の画像のブロック257は、その横幅がモバイル表示画面サイズに収まるので、図8の位置350の直下の位置355に配置している。
図6のブロック261〜265についても、同様に、図8の位置355の直下の位置360に配置している。
図6のブロック271〜272については、同様に、図8の位置360の直下の位置(図示省略)に配置する。
図6の画像のブロック281についてはその横幅がモバイル表示画面サイズに収まるので、図8のブロック272の直下の位置に配置する。なお、画像の配置位置はその親のブロック要素の座標により決まる。画像を縮小または拡大する場合にはその画像サイズを参照する。
図6のブロック291についてはブロック281の直下の位置に配置する。このブロック291は縦横比が大きいので後述する「折り畳み」を行うことができるが、折り畳んでも情報量が変わらないので、ここでは折り畳まないものとしている。モバイル表示画面の横幅より文字列が長い場合は、ブラウザの機能により折り返して表示される。
図6のブロック292〜295については、全体としてモバイル表示画面サイズに収まるので、ブロック291の直下の位置に配置する。但し、ブロック292〜295を縦並びに配置替えしてもよい。
複数のパーツをモバイル表示画面用に上から順に配置していく際に、PC用画面上でのパーツをどのような順でピックアップしていくかについては、予め定めた規則に従う。上述した例では、PC画面上の複数のパーツは、最上部の左から右に順次選択していき、右端に達したらその下に移動して、左から右に順次選択していく。
ただし、複数の小パーツが、モバイル画面の横幅に収まる一つの大ブロックに含まれる場合にはそれらの小パーツを一体として扱う。(図6のブロック252〜256等)同じ横幅サイズで、縦並びに並んでいる複数のパーツはそれらの上から下まで選択したあと、右へ移動する。(ブロック251、(252〜256)、257等)
なお、このような規則はあくまで例示であり、本発明はこれに限定されるものではない。
ところで、PC用webページにおいていわゆるナビゲーションと呼ばれるような横長の記述部(図6のブロック231〜237)は図8から判るように、初期状態でモバイル画面で縦に並べるとモバイル画面の大半を占有して煩わしく感じられる場合がある。
そこで、図8の最上部に示すように、モバイル画面上に[Close this section]という指示部を設けて、そのマイナスマーク210aをモバイル端末のユーザが指示すると、縦並びになっている複数の要素の一群をまとめて1つの要素に代表させる仕組みを設ける。この仕組みを「折り畳み」と呼ぶ。一つの要素であっても、大サイズの場合により小さい要素で代替表示することも可能である。このような処理も折り畳みに含まれる。
このようなシステムを用いれば、自動的に、PC用webページを比較的忠実にモバイル用webページに変換し、PC用コンテンツをモバイル端末等で閲覧可能とすることができる。
しかも、そのためにコンテンツプロバイダ(通常、企業)ではPC用webページ毎にそれに対応するモバイル用のwebページを別途用意しておく必要がなくなる。その結果、PC用コンテンツとモバイル用コンテンツの双方を作成し、かつ双方を同様にメンテナンス(同期)しなければならない、という煩雑な処理負担から当該コンテンツプロバイダを開放することができる。
ところで、このシステムは業務用アプリケーションなどの特定の用途において改善すべき点がある。以下、そのような課題について説明した後、その解決法について説明する。
図9は、PC用の第1のwebページ410から第2のwebページ420へ移行するwebページの遷移例を示している。第1のwebページ410のML文書のファイル名を1_1.phpとし、第2のwebページ420のML文書のファイル名を1_2.phpとしている。拡張子phpはPHPスクリプトを含むHTMLファイルを表している。第1のwebページ410は、チェックボックス413,414のようなユーザに情報の選択を促す入力要素(inpuタグ:インプットタグ)と、その選択結果情報をwebサーバへ送信するための送信(submit)ボタン(OKボタン)411とを含むフォームを有する。第2のwebページ420は、第1のwebページ410でのユーザの選択結果をユーザに知らしめるページを表している。
図10は、図9に示した第1のwebページ410および第2のwebページ420にそれぞれ対応したML文書(ソースファイル)510,520を表している。
ML文書510内のスクリプト記述部分511はクライアントサイドスクリプトの一例としてのJavaScriptを示している。この例では、_doClick(v)という関数を定めている。関数内の各部の意味は次のとおりである。なお、本明細書において、「クライアントサイドスクリプト」とは、コンテンツサーバでは実行されず、クライアントまたは変換サーバで実行されるスクリプトをいう。
var form = document._Memo; // 変数formに、_Memoという名前のオブジェクトを代入
form._Click.value = v; // formオジェクトが保持しているinputタグの中の_Clickという名前のオブジェクトのvalue属性に、引数vを上書き
form.submit(); // formオブジェクトのsubmit関数を呼びだして、formをJavaScriptから実行する
return false; // 通常submit()がうまく動作すればここには到達しないが、失敗した場合にfalseを返す
ML文書510の本文内のフォームを定義するフォーム記述部分513内には、formタグ514、hiddenタイプのinputタグ515およびsubmitタイプのinputタグ516、checkboxタイプのinputタグ517,518を含んでいる。
formタグ514は、methodとしてPOSTを指定し、actionとして所定のサーバサイドスクリプトを指定し、nameとして_MEMOを指定し、onsubmit属性として_doClick('1_2')というクライアントスクリプトを指定している。
hiddenタイプのinputタグ515では、ユーザには見せないがサーバに送信すべき入力情報としての_Clickという名前のオブジェクトのvalue属性の値0を初期値として設定している。submitタイプのinputタグ516はOKというラベルの送信ボタンを設定している。checkboxタイプのinputタグ517,518はユーザに情報(選択肢)の選択を促す選択手段を構成している。
上記OKボタンの押下に応じて、送信直前にonsubmit属性内で関数_doClickが呼び出され、次の画面ID(すなわち文書ID、ここでは1_2)が_Clickに設定され、フォームに関連した各種の入力データの送信が行われる。
ML文書(1_2.php)520は、サーバサイドスクリプト部分521を含んでいる。このサーバサイドスクリプト部分521では、_doClick関数で_Clickに適切な画面IDが設定されていれば、入力(選択)情報を出力し、そうでなければ、再度の選択の指示を出力するよう規定されている。
図11は、図9、図10に関連したクライアントとコンテンツサーバとの間のやりとりを表したシーケンス図である。
クライアントは、コンテンツサーバに対してhttpプロトコルに則ったGETメソッドのリクエストにより、チェックボックス付フォームを含むML文書である1_1.phpを要求し(S11)、その文書の返送を受ける(S21)。次いでクライアントは、ユーザによるチェックボックスのチェックおよびOKボタンの押下の操作を受け付ける(S12)。この受け付け後に、フォームのonsubmit属性で関数_doClick(1_2)を実行する(S13)。その結果、_Clickに1_2を設定し(S14)、チェックボックスの選択結果を含めてsubmit関数を実行する(S15)。その結果、クライアントはコンテンツサーバに対して、POSTメソッドにより、次に要求する文書ID(1_2.php)、_Clickの設定値、選択結果をコンテンツサーバへ送信する(S16)。図の例ではチェックボックスの一つ「太郎」が選択された場合を示している。コンテンツサーバは、その受信内容に応じて、次の画面の文書を返送する(S22)。
図12は、クライアントがモバイル端末であり、このクライアントとコンテンツサーバとの間に上記変換サーバが介在する場合の相互のやりとりを表したシーケンス図を示している。変換対象のML文書は、図9に示したwebページ410のML文書としている。
クライアントは、変換サーバ経由でコンテンツサーバに1_1.phpのML文書を要求する(S101,S111)。コンテンツサーバは当該文書を変換サーバに返送する(S121)。変換サーバはこの文書をモバイル用に変換してクライアントへ送信する(S112)。その変換結果画面430を図13に示す。この画面には、図9に示したwebページ410の画面と同様、送信ボタン431と、チェックボックス433,434がフォームとして含まれている。なお、簡単な画面例なので図面上明確ではないが、この画面はPC用webページをモバイル用のwebページに変換したものである。
クライアントは、ユーザによるチェック操作およびOKボタンの押下の操作を受け付けて(S102)、チェックボックス内容を含んだPOSTを行う(S103)。すなわち、記述q.phpにより、サーバに対して所定のコンテンツの変換(PC用ML文書からモバイル用ML文書への変換)を行うとともに、必要であればスクリプトの実行を要求する。変換の対象となるコンテンツはurl=で指定し、スクリプト実行はfollowing_js=で指定する。S103ではfollowing_js= は指定していない。また、選択結果(checkKojin=太郎)も変換サーバへ送信する。変換サーバは、これに応じて、コンテンツサーバへ1_2.phpを要求し、選択結果(「太郎」)を知らせる(S113)。このとき、_Clickが設定されていないので、コンテンツサーバはエラーと判定する(S122)。その結果、コンテンツサーバは変換サーバ経由で、クライアントに対して「個人を選択してください。」という再度の選択の指示を返送する(S123,S114)。
図14は図13の変換結果画面430に対応するML文書530を示している。図10の文書510と比較して分かるように、図14のML文書530ではクライアントサイドスクリプト511が変換サーバにて削除されている。これに伴ってフォームのonsubmit属性も削除されている。これはモバイル端末のブラウザでの制約でそのようなスクリプトの実行機能がないことに基づいている。POST先のactionURLは1_2.phpとしている。その結果、変換サーバ、ひいてはコンテンツサーバ側で、上記のような_doClick関数で求めた_Clickの値が得られず、チェックボックスの選択結果も確認ができない。そのため、上記のようにエラーと判定される。
この問題を解決するため、送信ボタンのonsubmit属性で実行すべきJavaScriptの内容(図10の文書510内のformタグ514の記述を参照)を送信ボタンの送信内容としてフォームのPOSTの記述内に埋め込むことにより、_doClick関数を変換サーバに実行させる方策が考えられる。
図15にそのような方策を採用した場合のクライアント、変換サーバ、コンテンツサーバの間のシーケンス図を示す。
クライアントは、変換サーバ経由でコンテンツサーバにML文書1_1.phpを要求する(S201,S211)。コンテンツサーバは当該文書を変換サーバに返送する(S221)。変換サーバはこの文書をモバイル用に変換してクライアントへ送信する(S212)。その変換結果画面は図13に示した画面430と同じである。但し、その変換結果ソースは図16に示すようなML文書540となる。すなわち、form action541およびurlに続けて、実行すべきスクリプトとしてfollowing_js=の後に、変換サーバで実行すべき関数_doClick ('1_2')を指定している。
図15に戻り、クライアントは、ユーザによるチェック操作およびOKボタンの押下の操作を受け付けて(S202)、チェックボックス内容を含んだPOSTを行う。すなわち、サーバに対して変換対象のurl(1_1.php)の変換を要求するとともに選択結果(「太郎」)に加えて、上記following_js=_doClick('1_2')を変換サーバへ送信する(S203)。
変換サーバは、このPOST内容を受信し、指定されたURLの文書、すなわち先に要求されたと同じ文書1_1.phpを要求して入手する(S213,S222)。このML文書は、変換サーバにてクライアントで実行すべきであった処理を代替的に実行するために必要となるからである。
そこで、変換サーバは、POST内容をFORMに適用する(S214)。すなわち、フォーム内の全てのinputタグについてそのタイプ毎にPOSTの内容を反映させる。
次いで、変換サーバはfollowing_jsパラメータのJavaScriptを実行する(S215)。図15の例では関数_doClick ('1_2')を実行し、_Clickに'1_2'を設定する(S216)。また、チェックボックス内容を含んだsubmit関数を実行する(S217)。
その後、変換サーバは、次に要求する文書ID(ここでは1_2.php)、_Clickの設定値(ここでは’1_2’)および選択結果(ここでは「太郎」)をコンテンツサーバへ送信する(S218)。
コンテンツサーバでは、_Clickが設定されているので、OKと判定し(S223)、要求された文書1_2.phpを変換サーバへ返送する(S224)。
このようにフォームのPOST内容に含められるクライアントサイドスクリプトとして、変換サーバで実行すべき関数を指定することにより、上記のようなチェックボックスの選択結果の確認ができないという問題は解決される。
しかし、特定の状況においてなお問題が生じることが判明した。すなわち、そのような場合として、1つのフォーム内に送信ボタンが複数存在する場合を考慮する。図17はそのような場合の例として、まず、PC用ブラウザでのwebページの画面遷移例を示す。
一般に1つのフォーム内に複数の送信ボタンを設ける場合、onsubmit属性を送信ボタン毎に用意できず、またクライアントで押下された送信ボタンの区別ができないため、送信ボタン毎に別の処理を実行することができないという問題がある。そこで、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付のアンカータグとして、例えばonclick属性付のアンカータグを用いることにより、送信ボタンと同様の機能を実現する手法が考えられる。onclick属性とは、ML文書内のアンカータグ等の要素に対してマウスなどのポインティングデバイスのいわゆるクリック操作を行った等の所定のイベントの発生時に起動するスクリプト(クライアントサイドスクリプト)を指定するイベント属性(イベントハンドラ)である。複数のアンカータグの各々にスクリプトの異なるonclick属性を付加しておくことにより、別々の処理を行うonsubmit属性の複数の送信ボタンと同等の機能が実現できる。
図17はそのようなonclick属性付のアンカータグを用いた具体的なwebページの遷移例を示している。PC用のwebページ450を構成するML文書(2_1.php)では、フォーム内に、アンカータグに対応するアンカーポイント451,452を用いて、キャンセルボタンとOKボタンが構成されている。このキャンセルボタンは、単に端末においてformの入力内容をサーバに問い合わせることなくクリアするためのものではなく、サーバに問い合わせてから画面を一つ戻すことを想定している。また、この例において階層の上位の選択肢を提示するチェックボックス454,455も設けられている。PC用のML文書(2_2.php)のwebページ460は、webページ450から移行するwebページである。このwebページ上には、webページ450上のアンカーポイント451,452と同様のアンカーポイント461,462と、下位の選択肢を提示する他のチェックボックス454,455が設けられている。続くML文書(2_3.php)470は、上位と下位の選択肢の選択結果をユーザが確認するための画面である。
図18は、webページ450のML文書(2_1.php)550を示している。
スクリプト記述部551はクライアントサイドスクリプトの一例としてのJavaScriptであり、図10のML文書(ソースファイル)510内のスクリプト記述部分511と同様の関数を定義した部分である。フォームタグ部分552はフォームのmethodおよびactionを定めた部分である。inputタグ553は、type="hidden"で_Clickというオブジェクトの初期値を定めた部分である。tableタグ5554はアンカータグとしてのボタン名を配列するテーブルデータを定めた部分である。onclik属性付のアンカータグ部分555,556はテーブルデータに含まれる形で、それぞれ、「キャンセル」と「OK」という文字列がクリック対象文字列として割り当てられている。inputタグ558,559は、この例で上位の選択肢を提示するチェックボックスを構成している。
図19は、webページ460のML文書(2_2.php)とwebページ470のML文書(2_3.php)のそれぞれのML文書560,570を示している。
図19のML文書560の要素561〜566、568,569は図18のML文書550の要素551〜556、558,559と同様である。異なる点は、ML文書560が、追加的に要素567を有する点である。この要素567は、_Clickに'2_2'が設定されているとき、checkJyouiというオブジェクトにPOSTされてきたcheckJyouiの値を設定するものである。ここではhiddenタイプのinputタグを用いている。
図19のwebページ470のML文書(2_3.php)は、ユーザにより選択された上位と下位の選択肢に応じて、その結果を出力するためのものである。具体的には、_Clickに'2_3'が設定され、かつ、checkJyouiとcheckKaiにそれぞれ値が設定されている場合、図17のML文書470のようなメッセージを出力するものである。
図20は、図17のwebページ450,460,470の遷移に関連したクライアント(PC)とコンテンツサーバのやりとりを表したシーケンス図である。
クライアントは、コンテンツサーバに対して、チェックボックス付フォームを含むML文書である2_1.phpの要求(S31)を要求し、その文書の返送を受ける(S51)。次いでクライアントは、ユーザによる上位の選択肢についてのチェックボックスのチェックおよびOKボタンの押下の操作を受け付ける(S32)。この受け付け後に、onclick属性による_doClick(2_2)を実行する(S33)。この_doClick関数の実行の結果、_Clickに2_2を設定し(S34)、チェックボックス内容を含んだsubmit関数を実行する(S35)。その結果、クライアントはコンテンツサーバに対して、POSTメソッドにより、次に要求する文書ID(2_2.php)、_Clickの設定値(2_2)、および選択結果(checkJyoui=東京支店)をコンテンツサーバへ送信する(S36)。図の例では「東京支店」が選択された場合を示している。コンテンツサーバは、その受信内容に応じて、次の画面の文書2_2.phpを返送する(S52)。その際、図19に示した要素567の働きにより、checkJyouiに「東京支店」が設定された状況で返送される。
クライアントは、さらに、ユーザによる下位の選択肢についてのチェックボックスのチェックおよびOKボタンの押下の操作を受け付ける(S37)。この受け付け後に、onclick属性による_doClick(2_3)を実行する(S38)。この_doClick関数の実行の結果、_Clickに2_3を設定し(S39)、チェックボックス内容を含んだsubmit関数を実行する(S40)。その結果、クライアントはコンテンツサーバに対して、POSTメソッドにより、次に要求する文書ID(2_3.php)、_Clickの設定値(2_3)、および選択結果(前回の選択結果checkJyoui=東京支店、および今回の選択結果checkKai=千代田区総合支社)をコンテンツサーバへ送信する(S41)。図の例では「千代田区総合支社」が選択された場合を示している。コンテンツサーバは、その受信内容に応じて、次のwebページ470の文書2_3.phpを返送する(S53)。
次に図17に示したPC用のwebページ450,460,470を、変換サーバを介してモバイル用ML文書に変換する場合について、説明する。図21は、その際のクライアントと変換サーバとコンテンツサーバの間のやりとりを表したシーケンス図である。
クライアントは、変換サーバ経由でコンテンツサーバに対して、ML文書2_1.php(図18のML文書550)を要求する(S301,S311)。コンテンツサーバは当該文書を変換サーバに返送する(S321)。変換サーバはこの文書をモバイル用に変換してクライアントへ送信する(S312)。その変換結果画面は図22に示した画面480である。この画面では、アンカータグによるキャンセルボタン481およびアンカータグによるOKボタン482、およびチェックボックス484,485が含まれている。
図22の画面480の変換結果ソースは図23に示すようなML文書580となる。すなわち、form action581として、変換対象のURL2_2.phpの変換を要求し、メソッドをPOSTとしている。
hiddenタイプのinputタグ582で_Clickの初期値を設定している。
また、キャンセルボタンのアンカータグ要素583として、url2_1.phpの変換を要求するとともに、following_js=の後に、変換サーバで実行すべき関数_doClick('2_1')を指定している。同様に、OKボタンのアンカータグ要素584として、url2_1.phpの変換を要求するとともに、following_js=の後に、変換サーバで実行すべき関数_doClick('2_2')を指定している。
チェックボックスタイプのinputタグ585,586はそれぞれ上位および下位の選択肢を提示している。
図21に戻り、クライアントは、ユーザによるチェック操作およびOKボタンの押下の操作を受け付けて(S302)、FORMの内容は関係なく、onclick属性の関数を実行する(S303)。すなわち、サーバに対してurl(2_1.php)の変換を要求すると共に、following_jsパラメータを変換サーバへ送信する(S304)。
変換サーバは、この内容を受信し、指定されたURLの文書、すなわち先に要求されたと同じ文書2_1.phpを要求して入手する(S313,S322)。これは、変換サーバにてクライアントで実行すべきであった処理を代替的に実行するために必要となるからである。
そこで、変換サーバは、fillowing_jsパラメータのJavaScriptを実行する(S314)。ついで、doClick関数で、_Clickに'2_2'を設定する(S315)。また、チェックボックス内容が欠落したまま、submit関数を実行する(S316)。
その後、変換サーバは、次に要求する文書ID(ここでは2_2.php)、_Clickの設定値(2_2)をコンテンツサーバへ送信する(S317)。しかし、選択結果が通知されないので、コンテンツサーバはNGと判定する(S323)。
チェックボックス内容が欠落するのは、doClick関数をモバイルブラウザが実行できないということ、加えて、OKボタンが押下されて送信(submit)ボタンでformの内容を送るのではなく、アンカータグに付随したオンクリック属性に基づく送信なのでフォーム入力内容が送信されないことが理由である。
図24は、本発明の実施の形態によるクライアント、変換サーバとコンテンツサーバの間のやりとりを表したシーケンス図である。
クライアントは、変換サーバ経由でコンテンツサーバに対して、ML文書2_1.php(図18のML文書550)を要求する(S401,S411)。コンテンツサーバは当該文書を変換サーバに返送する(S421)。ここで、変換サーバはこの文書をそのままモバイル用に変換してクライアントへ送信するのではなく、変換前に予め定めた所定のルール(「変換前ルール」と呼ぶ)を適用する(S412)。その後、図示しないが、変換サーバは上述したようなモバイル用ML文書への変換処理を実行する。このような処理後のML文書をクライアントへ送信する(S413)。その変換結果画面は、図25に示したモバイル端末上の変換結果画面490である。この画面でのキャンセルボタン491およびOKボタン492は、アンカータグによるものではなく、inputタグによる送信(submit)ボタンとしてのinput要素である。この画面には上記と同様のチェックボックス494,495も含まれている。
図25の画面490の変換結果ソースは図26に示すようなML文書590となる。すなわち、form action591として、URL(2_1.php)の変換を要求している。また、following_js=の後に付加するfollowing_jsパラメータ592として、前記変換前ルールにより、元のページのonclick属性に基づいて送信ボタンとJavaScriptとの対応関係を示す対応テーブルを作成し、onsubmit属性のJavaScript内に埋め込んでいる。
inputタグ593は、hiddenタイプのinput要素であり、_Clickの初期値を設定している。inputタグ594は、submitタイプのinput要素であり、name="dummy"、id="onclick1"として「キャンセル」という送信ボタンを定めている。inputタグ595は、submitタイプのinput要素であり、name="dummy"、id="onclick2"として「OK」という送信ボタンを定めている。id="onclick1"等のid属性は、form内容に応じて、変換前ルールでonclick属性の内容をonsubmit内容の対応テーブルに移す(すなわち、id属性をキーとして、onclick属性の中身を値として、対応テーブルに追加する)際のキーとして用いる。
input要素598はcheckboxタイプのinput要素であり、checkJyouiというnameの選択肢として「東京支店」を提示している。同様に、input要素599はcheckboxタイプのinput要素であり、checkJyouiというnameの選択肢として「システム保守」を提示している。
図27はML文書590の中にあるfollowing_jsパラメータ592の説明図である。following_jsパラメータ592の表記は複数のJavaScriptが一連に連結されてURLエンコードされたものである。URLエンコードとは、URIにASCIIの非予約文字以外の文字データを用いる場合に"%xx"(xxは16進数)という形式でコードを表記することをいう。この表記では、直ちに理解できないので、読みやすくした形で示したのが図27の下部のJavaScript文書592aである。その記述部分5921が上記対応テーブルを表している。この例では、上記idのonclick1と、onclick2とがそれぞれ関数_doClick(\'2_1\')と関数_doClick(\'2_2\')に対応することを示している。記述部分5923では、上記対応テーブルのいずれかのエントリ(項目)が上記マーク内容と一致したとき、evalで当該関数を実行することを規定している。
図24に戻り、クライアントは、ユーザによるチェック操作およびOKボタンの押下の操作を受け付けて(S402)、変換サーバへのPOSTを実行する。すなわち、サーバに対してurl(2_1.php)の変換を要求するとともに、following_jsパラメータ592および選択結果(checkJyoui=東京支店)を変換サーバへ送信する(S403)。
変換サーバは、この内容を受信し、指定されたURLの文書、すなわち先に要求されたと同じ文書2_1.phpを要求して入手する(S414,S422)。上述のように、これは、変換サーバにてクライアントで実行すべきであった処理を代替的に実行するために必要となるからである。
そこで、変換サーバは、再度、変換前のルールを適用する(S415)。これは、ステップS412で変換前ルールを適用した直後の状態のML文書(2_1.php)を得るためである。本来クライアントで実行されるべき処理を変換サーバで代替的に実行するために、クライアントにおいて得たML文書を再現するためである。
そこで、変換サーバは、POST内容をFORMに反映させて、どの送信ボタンが押下されたかについてもマークを行う(S416)。すなわち、フォーム内の全てのinput要素についてそのタイプ毎にPOSTの内容を反映させる。
次いで、変換サーバは上記following_jsパラメータで記述されたonsubmit属性を実行することにより、上記マークされた送信ボタンに対応した関数を実行する(S417)。その結果、次の所定のML文書の指定(2_2.php)、_Clickの設定値(2_2)、およびチェック内容(checkJyoui=東京支店)をコンテンツサーバへ送信する(S418)。
上記ステップS416におけるPOSTの内容をFORMに反映させるという処理では、クライアントから変換サーバにPOSTされた内容を使って、以下のようなJavaScriptを変換サーバ内で自動生成し、最初の変換前ルールを適用した結果の状態の変換サーバ上のFORMにPOST内容を反映させる。
/* ここから自動生成(1) */
var target_form=document.forms._Memo; /* 対象FORM */
var hash={'__Click': [],'dummy': [],'checkJyoui': [],}; /* POST内容反映配列 */
hash['__Click'].push('0'); /* __Clickの反映 */
hash['dummy'].push('OK'); /* dummyの反映 */
hash['checkJyoui'].push('%E6%9D%B1%E4%BA%AC%E6%94%AF%E5%BA%97'); /* checkJyouiの反映 */
/* ここまで自動生成(1) */
/* ここから定型(1) */
var elems = target_form.elements;
/* form内の全てのinput要素について */
for (var i=0; hash && i<elems.length; i++) {
/* 一度checkboxのチェックをクリア */
if ('checkbox' == elems.item(i).type) {
elems.item(i).checked = false;
}
/* 反映したいinputがformに存在するかチェック */
var new_values = hash[elems.item(i).name];
if (undefined == new_values) {
continue;
}
if (0 == new_values.length) {
continue;
}
var new_value = new_values[0];
if (undefined == new_value) {
continue;
}
/* 反映したいinputをtypeごとに処理分け */
switch (elems.item(i).type) {
case 'select-one': /* 単一select */
{
var options = elems.item(i).options;
/* select内の全てのinputについて、一致する最初のものをselectedに */
for (var j=0; j<options.length; j++) {
var old_value = options[j].getAttribute('value');
if (null == old_value) {
old_value = options[j].firstChild.nodeValue.replace(/^[ ]+|[ ]+$/g, '');
}
if (new_value == old_value) {
elems.item(i).selectedIndex = j;
new_values.shift();
break;
}
}
}
break;
case 'select-multiple': /* 複数select */
{
var options = elems.item(i).options;
var survived_values = [];
for (var j=0; j<options.length; j++) {
options[j].selected = false;
}
/* select内の全てのinputについて、一致する全てのものをselectedに */
for (var j in new_values) {
var k=0;
for (; k<options.length; k++) {
var old_value = options[k].getAttribute('value');
if (null == old_value) {
old_value = options[k].firstChild.nodeValue.replace(/^[ ]+|[ ]+$/g, '');
}
if (!options[k].selected && new_values[j] == old_value) {
options[k].selected = true;
break;
}
}
if (options.length == k) {
survived_values.push(new_values[j]);
}
}
hash[elems.item(i).name] = survived_values;
}
break;
case 'radio': /* ラジオボタン */
if (new_value == elems.item(i).value) {
elems.item(i).click(); /* クリック */
new_values.shift();
}
break;
case 'checkbox': /* チェックボックス */
if (new_value == elems.item(i).value) {
elems.item(i).checked = true; /* チェック */
new_values.shift();
}
break;
case 'text': /* テキスト */
case 'textarea': /* テキストエリア */
case 'password': /* パスワード */
case 'hidden': /* 隠し属性 */
elems.item(i).value=new_value;
new_values.shift();
break;
case 'submit': /* サブミット */
if (new_value == elems.item(i).value) {
/* nft属性でマーキング */
attr = elems.item(i).getAttribute('nft');
if (null == attr) {
attr = '';
}
attr += 'click:1;';
elems.item(i).setAttribute('nft', attr);
new_values.shift();
}
break;
case 'image': /* 画像 */
case 'button': /* ボタン */
case 'reset': /* リセット */
/* 反映不要*/
new_values.shift();
break;
default:
break;
}
}
/* ここまで定型(1) */
/* ここからページごと自動生成(2) */
var ok = (<onsubmit属性の実行>);
/* ここまでページごと自動生成(2) */
if (false != ok) {
target_form.submit(); /* submitを実行し、変換サーバからコンテンツサーバに送信 */
}
図28は上記変換前ルールの一例としてのスクリプトを変換前ルール600として示したものである。
最初の関数は、次の作用を有する。
* - 指定ノード子孫のonclickの内容をテーブル化する
* - onclick2onsubmitから呼出され、内部で再帰呼び出しして引数ノードの全ての子孫について実行する
また、その引数は次の作用を有する。
* - in_elem はDOMノードで、in_elemの全子孫を辿って、onclickの内容を、in_mapに格納。
* - in_map は(onclick<count>, onclickの内容)のハッシュテーブル。
* - count は、現在何番目のonclickかを示すIDのためのカウント。
各行についてコメントを示すと以下のとおりである。
function _onclick2onsubmit(in_elem, in_map, count) {
var child = in_elem.firstChild; /* in_elemの最初の子ノード */
while (child) { /* 子ノードがある限り */
var input = null;
var sibling = child.nextSibling;
if ('A' == child.nodeName) { /* aタグの場合 */
var onclick = child.getAttribute('onclick'); /* onclick属性の中身のスクリプト *
if (onclick) { /* onclick属性がある場合 */
count++; /* テーブルのエントリ番号のインクリメント */
var id = 'onclick'+count; /* id属性の自動付与 */
input = document.createElement('input'); /* inputタグの新規作成 */
input.setAttribute('type', 'submit'); /* type属性はsubmit */
input.setAttribute('name', 'dummy'); /* name属性はdummy */
input.setAttribute('value', child.innerText); /* value属性はもとのaタグの内部のテキスト */
input.setAttribute('id', id); /* id属性はonclick<エントリー番号> */
onclick = onclick.replace(/^return /g, ''); /* スクリプトの不要な文字の削除 */
in_map[id] = onclick.replace(/\'/g, '\\\''); /* スクリプトのクォートのエスケープ後、テーブルにonclick<エントリー番号>で追加 */
}
}
count = _onclick2onsubmit(child, in_map, count); /* 再帰呼出 */
if (input) {
child.parentNode.replaceChild(input, child); /* aタグを新規作成したinputタグで置換 */
}
child = sibling; /* 次の子ノード */
}
return count; /* エントリ番号を返す */
}
次の関数は、次の作用を有する。
* - 指定form子孫のonclickの内容をテーブル化したスクリプトを作成し、onsubmit属性に埋め込む
その引数は次の作用を有する。
* - frmは指定フォームのDOMオブジェクト
* - hookはonsubmit属性に埋め込む際に先頭に追加するスクリプト
各行にコメントを付加すれば次のとおりである。
function onclick2onsubmit(frm, hook) {
var org = frm.getAttribute('onsubmit'); /* onsubmit属性 */
if (!org) {
org = ""; /* nullなら空文字列を設定 */
}
if (0 <= org.indexOf("var map={")) {
return; /* onsubmit属性が var map= で始まっている場合はすでに処理済みなので終了 */
}
var map = {}; /* 空のテーブル */
_onclick2onsubmit(frm, map, 0); /* 指定フォームから、テーブル化 */
var onsubmit = "return (function(){var map={"; /* 以下、上記テーブル化したものをスクリプト化していく */
for (var key in map) { /* テーブルの中身を順次JavaScriptのテーブル表現に *
onsubmit += ("'" + key + "':'"+ map[key] + "',");
}
onsubmit += "};"; /* テーブル終了 */
onsubmit += "var f=document.forms[0];"; /* 0番目のフォーム */
onsubmit += "if(undefined==f.dummy.length){f.dummy=new Array(f.dummy);}"; /* <input type=submit name=dummyがなければ、空配列新規作成 */
onsubmit += "for(i=0;i<f.dummy.length;i++){"; /* nameがdummyのinputタグを順次処理する */
onsubmit += "var s=f.dummy[i];"; /* inputタグを変数sに代入 */
/* クリックされたsubmitに対してのみnft属性が追加され、値は"click:1;"になっている */
/* これはクリックされたマークなので、この条件で上記マップから必要なonclickのスクリプトを取り出し、evalで実行 */
onsubmit += "if(s.getAttribute('nft')){"+hook+";eval(map[s.id]);break;}";
onsubmit += "}";
onsubmit += "return false;})();"; /* スクリプト化終了 */
if (org) {
onsubmit += org; /* 元のonsubmit属性を最後に追加 */
}
frm.setAttribute('onsubmit', onsubmit); /* スクリプト化したものをonsubmit属性に埋め込む */
}
/* 0番目のフォーム子孫のonclick属性をテーブル化しonsubmit属性に埋め込む *
onclick2onsubmit(document.forms[0], "f.onsubmit=null;");
次に図29に、図24のシーケンス図に続く部分も含めたシーケンス図を示す。図24に示したように、フォームを含むwebページが単独で用いられる場合には特に問題は生じないが、フォームを含む複数のwebページが有機的に連続する場合に生じる不具合について説明する。
ステップS401〜S403、S411〜S418、S421〜S422は、図24に示した同ステップと同じであり、説明を省略する。
コンテンツサーバは、変換サーバからPOSTを受けると(S418)、ML文書2_2.phpに対してcheckJyouiの選択結果を埋め込んだものを変換サーバへ送信する(S423)。これは図19のML文書562内の要素567の働きによる。
これに対して変換サーバは、変換前ルールを適用する(S419)。その後、図示しないが、変換サーバは上述したようなモバイル用ML文書への変換処理を実行する。このような処理後のML文書をクライアントへ送信する(S430)。
クライアントは、ML文書2_2.phpの画面に対するユーザによるチェック操作およびOKボタンの押下の操作を受け付けて(S404)、変換サーバへのPOSTを実行する。すなわち、サーバに対してurl(2_2.php)の変換を要求するとともに、following_jsパラメータ592および選択結果(checkJyoui=東京支店&checkKai=千代田区総合支社)を変換サーバへ送信する(S405)。checkJyouiは今回の画面での入力ではなく、ステップS423での設定値が残存しているものである。
変換サーバは、この内容を受信し、指定されたURLの文書、すなわち先に要求されたと同じ文書2_2.phpを要求して入手する(S431,S425)。
そこで、変換サーバは、再度、変換前のルールを適用する(S432)。これは、ステップS419で変換前ルールを適用した直後の状態のML文書(2_2.php)を得るためである。
そこで、変換サーバは、POST内容をFORMに反映させて、どの送信ボタンが押下されたかについてもマークを行う(S433)。すなわち、フォーム内の全てのinput要素についてそのタイプ毎にPOSTの内容を反映させる。
次いで、変換サーバは、フォームのPOST(送信)内容として埋め込まれているonsubmit属性(アンカータグのonclick属性として記述されたJavaScript(クライアントサイドスクリプト)をフォーム内に集約したもの)を実行することにより、上記マークされた送信ボタンに対応した関数を実行する(S434)。その結果、次の所定のML文書の指定(2_3.php)、_Clickの設定値(2_3)、およびチェック内容(checkKai=千代田区総合支社)をコンテンツサーバへ送信する(S418)。これを受けたコンテンツサーバは選択結果としてcheckJyouiの設定値が欠落しているために、NGと判定する(S426)。これによりML文書2_3.phpで「上位組織と下位組織を選択してください。」という画面をクライアントに表示させる(S427,S436)。
ステップS426で選択結果情報としてcheckJyouiの設定値が欠落していたのは、ステップS405で変換サーバがクライアントから上位と下位の選択結果を受信しておきながら、ステップS431においてコンテンツサーバにML文書2_2.phpをGETリクエストで再要求したため、コンテンツサーバにcheckJyouiの設定値が伝わらず、コンテンツサーバからcheckJyouiに設定値を埋め込んでないML文書が返送されたためである。
図30にこのような不具合を改良した場合のシーケンス図を示す。図29に示したと同様のステップには同じ参照符号を付して重複した説明は省略する。図30では図29のステップS414,S422を削除し、その代わりに変換サーバの処理としてステップS413の後にステップS413aを追加している。また、変換サーバはコンテンツサーバから一旦受信したML文書をオフラインキャッシュとして変換サーバ内部(図4のコンテンツデータキャッシュ管理部158)に保存しておく。このステップS413aではオフラインキャッシュからML文書2_1.phpを再読み込みする。また、ステップS431,S425を削除し、変換サーバの処理としてステップS430の後にステップS430aを追加する。このステップS430aではオフラインキャッシュから選択結果(checkHyoui)の入ったML文書2_2.phpを再読み込みする。その結果、ステップS426では「OK」と判定し、続くステップS427ではクライアントへ確認画面2_3.phpで「上位組織は〜です、下位組織は〜です。」というメッセージを返す(S427,S436)。なお、ステップS413aの段階ではキャッシュからの読み出しでなくても問題は生じないが、S413aとS430aで共通の処理とすることにより複雑な例外処理を不要とすることができる。
図31に、本実施の形態における変換サーバの主要な処理のフローチャートを示す。
クライアントからML文書の要求を受領し(S81)、これに応じてコンテンツサーバに当該ML文書を要求し、受領する(S82)。このML文書がフォームを含み、フォーム内にonclick属性(イベント属性)付のアンカータグを有するかどうかをチェックする(S83)。onclick属性付のアンカータグを有しない場合は、図示の後続の処理を省略する。onclick属性付のアンカータグを有する場合、そのML文書に対して変換前ルールを適用する(S84)。これにより、当該アンカータグをsubmit属性付のinputボタン(送信ボタン)に変更する(S84)。さらにこのML文書をモバイル用ML文書に変換し(S85)、クライアントへ送信する(S86)。
クライアントからフォームに対する入力結果の返信を受信したとき(S87)、変換サーバはコンテンツサーバから直前に入手されている同ML文書をオフラインキャッシュから再入手する(S88)。さらにこのML文書に対して上記と同様に変換前ルールを適用する(S89)。この適用後のML文書に対してPOST内容を反映させ、押下された送信(submit)ボタンが何であるかをマークし、送信ボタンのPOSTの記述内に埋め込まれているonsubmit属性を実行することにより、当該マークされた送信ボタンに対応した関数を上記対応テーブルから確認して、当該関数を実行する(S90)。その結果をコンテンツサーバへ送信する(S91)。
なお、本発明によるマークアップ言語文書変換装置は、他の見地によれば、次のような構成をとることもできる。すなわち、クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信し、受信したマークアップ言語文書を一時的に保存し、前記受信したマークアップ言語文書に所定の変換を施してクライアントへ送信する。クライアントから、前記マークアップ言語文書に対するユーザの操作に応じてクライアントサイドスクリプトを起動する処理要求を受けたとき、前記一時保存されたマークアップ言語文書に対して当該要求された処理を実行し、前記コンテンツサーバへ当該要求された処理の実行結果を送信する。
タグのonsubmit属性やonclick属性などのイベント属性を用いて第1の画面から第2の画面に遷移する場合、変換サーバはコンテンツサーバから受信した第1の画面のPC用ML文書をモバイル用ML文書に一旦変換し、その後、ユーザアクションに応じて再度第1の画面のML文書を読み込んで当該属性中のクライアントサイドサーバを実行して、第2の画面へ遷移する。そのような場合、第1の画面のML文書を2回読み込んだ後、第2の画面へ移行することになる。その場合に、上述のように、2回目の第1の画面のML文書を再度コンテンツサーバに再度要求した受信したのでは、ML文書の内容が所期の状態になっていないため、画面遷移がうまくいかない場合がある。例えば2回目の第1の画面のPC用ML文書が一意なURLで特定できず取得できない場合がある。その一例としては第1の画面のPC用ML文書のURLが同じであっても、クライアントからPOSTするデータによってそのML文書の画面が変わる場合が挙げられる。
この構成では変換サーバにおける位弁護属性に基づく画面遷移の際に、同じML文書を2度読みする際に2度目は一時保存してあるML文書を利用することにより、図30で上述したような選択情報等が埋め込まれた状態のML文書を有効に残して利用することができ、その結果として、コンテンツサーバとクライアントとの間に変換サーバが介在しても所期の画面遷移を達成することが可能となる。
以上、本発明の好適な実施の形態について説明したが、上記で言及した以外にも種々の変形、変更を行うことが可能である。
また、ユーザに選択肢を提示フォームのinput要素としてチェックボックスのみを示したが、本発明が適用可能なinput要素は「チェックボックス」に限定されるものではなく、ラジオボタンのような他の選択ボタンも含みうる。また、本発明は選択メニュー等の他のinput要素にも適用可能である。
上記の説明では、変換サーバでの変換対象としてイベント属性付のアンカータグを例として挙げたが、本発明が適用されるタグはアンカータグに限るものではなく、イベント属性が付与されうる任意のタグを含みうる。
変換サーバは1台としたが、複数台設けて、負荷を分散するようにしてもよい。
本発明のマークアップ言語文書変換装置は、通信ネットワーク上の変換サーバとして説明したが、通信ネットワークに接続されない単体の装置であってもよい。あるいは、ホームサーバ(ホームゲートウェイ)に搭載され、ホームネットワークでつながれた他の家電機器などに、本発明のマークアップ言語文書変換の機能を適用することも可能である。
webブラウザ上で動作するクライアントサイドスクリプトの一例としてJavaScriptを挙げたが、ECMAScript等の他のスクリプトにも本発明は適用可能である。
本発明はPC用ML文書をモバイル用ML文書に変換することを前提として説明したが、受信端末において上記のような制約がある場合等には必ずしもモバイル用ML文書に変換することは必須ではない。
上記実施の形態で説明した機能をコンピュータで実現するためのコンピュータプログラムおよびプログラムをコンピュータ読み取り可能に格納した記録媒体も本願発明に含まれる。
20…ブラウザエンジン、110…モバイル端末、120…webサーバ、130…PC用webサーバ、140…通信ネットワーク、150…変換サーバ、152…セッション管理部、156…変換結果キャッシュ管理部、157…コンテンツ取得情報キャッシュ管理部、158…コンテンツデータキャッシュ管理部、160…トランスコーダエンジン、161…変換処理部、162…トランスコーダフロントエンド、170…前処理部、241…画像、410…webページ、413,414…チェックボックス、420…webページ、430…変換結果画面、431…送信ボタン、433,434…チェックボックス、450,460,470…webページ、451,452…アンカーポイント、454,455…チェックボックス、461,462…アンカーポイント、481…キャンセルボタン、482…OKボタン、484,485…チェックボックス、490…変換結果画面、491…キャンセルボタン、492…OKボタン、494,495…チェックボックス、510,520,530,540,550…ML文書、511…スクリプト記述部分、513…フォーム記述部分、514…formタグ、515〜518…inputタグ、521…サーバサイドスクリプト部分、551…スクリプト記述部、552…フォームタグ部分、553…inputタグ、555,556…アンカータグ部分、558,559…inputタグ、560…ML文書、560,570…ML文書、566…要素、580…ML文書、582…input要素、583,584…アンカータグ要素、590…ML文書、592…パラメータ、592a…ML文書、600…変換前ルール

Claims (12)

  1. クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信する手段と、
    受信したマークアップ言語文書がユーザに情報の入力を促すフォームを含み、かつ、このフォームが、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付タグを含むか否かをチェックする手段と、
    前記イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段と、
    この変更後のマークアップ言語文書をクライアントへ送信する手段と、
    前記クライアントから前記フォームに対する選択結果情報とともに前記フォームの送信内容に埋め込まれたクライアントサイドスクリプトを受信する手段と、
    前記クライアントから受信した選択結果情報に基づいて前記クライアントサイドスクリプトを実行する手段と、
    前記クライアントサイドスクリプトの実行により前記コンテンツサーバへ所定の要求および前記選択結果情報を送信する手段と
    を備えたマークアップ言語文書変換装置。
  2. 前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段において、前記イベント属性付タグが複数存在する場合、前記フォームの送信内容において、各イベント属性付タグと当該クライアントサイドスクリプトとを対応づけておき、前記クライアントから前記クライアントサイドスクリプトを受信したとき、前記クライアントにおいていずれの送信ボタンが指示されたかに応じて、対応するクライアントサイドスクリプトを実行する請求項1に記載のマークアップ言語文書変換装置。
  3. 前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段において、前記コンテンツサーバから次に取得するマークアップ言語文書として前記クライアントから要求されたマークアップ言語文書と同じ文書を指定する請求項1または2に記載のマークアップ言語文書変換装置。
  4. 前記コンテンツサーバから受信したコンテンツを一時的に保存する手段と、前記クライアントから要求されたマークアップ言語文書と同じ文書を要求する際、前記一時的に保存したコンテンツを利用する手段とをさらに備えた請求項3に記載のマークアップ言語文書変換装置。
  5. クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、
    受信したマークアップ言語文書がユーザに情報の入力を促すフォームを含み、かつ、このフォームが、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付タグを含むか否かをチェックするステップと、
    前記イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップと、
    この変更後のマークアップ言語文書をクライアントへ送信するステップと、
    前記クライアントから前記フォームに対する選択結果情報とともに前記フォームの送信内容に埋め込まれたクライアントサイドスクリプトを受信するステップと、
    前記クライアントから受信した選択結果情報に基づいて前記クライアントサイドスクリプトを実行するステップと、
    前記クライアントサイドスクリプトの実行により前記コンテンツサーバへ所定の要求および前記選択結果情報を送信するステップと
    を備えたマークアップ言語文書変換方法。
  6. 前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップにおいて、前記イベント属性付タグが複数存在する場合、前記フォームの送信内容において、各イベント属性付タグと当該クライアントサイドスクリプトとを対応づけておき、前記クライアントから前記クライアントサイドスクリプトを受信したとき、前記クライアントにおいていずれの送信ボタンが指示されたかに応じて、対応するクライアントサイドスクリプトを実行する請求項5に記載のマークアップ言語文書変換方法。
  7. 前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップにおいて、前記コンテンツサーバから次に取得するマークアップ言語文書として前記クライアントから要求されたマークアップ言語文書と同じ文書を指定する請求項5または6に記載のマークアップ言語文書変換方法。
  8. 前記コンテンツサーバから受信したコンテンツを一時的に保存するステップと、前記クライアントから要求されたマークアップ言語文書と同じ文書を要求する際、前記一時的に保存したコンテンツを利用するステップとを更に備えた請求項7に記載のマークアップ言語文書変換方法。
  9. クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、
    受信したマークアップ言語文書がユーザに情報の入力を促すフォームを含み、かつ、このフォームが、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付タグを含むか否かをチェックするステップと、
    前記イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップと、
    この変更後のマークアップ言語文書をクライアントへ送信するステップと、
    前記クライアントから前記フォームに対する選択結果情報とともに前記フォームの送信内容に埋め込まれたクライアントサイドスクリプトを受信するステップと、
    前記クライアントから受信した選択結果情報に基づいて前記クライアントサイドスクリプトを実行するステップと、
    前記クライアントサイドスクリプトの実行により前記コンテンツサーバへ所定の要求および前記選択結果情報を送信するステップと
    をコンピュータに実行させるマークアップ言語文書変換プログラム。
  10. クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信する手段と、
    受信したマークアップ言語文書を一時的に保存する手段と、
    前記受信したマークアップ言語文書に所定の変換を施してクライアントへ送信する手段と、
    クライアントから、前記マークアップ言語文書に対するユーザの操作に応じてクライアントサイドスクリプトを起動する処理要求を受けたとき、前記一時保存されたマークアップ言語文書に対して当該要求された処理を実行する手段と、
    前記コンテンツサーバへ当該要求された処理の実行結果および所定の要求を送信する手段と
    を備えたマークアップ言語文書変換装置。
  11. クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、
    受信したマークアップ言語文書を一時的に保存するステップと、
    前記受信したマークアップ言語文書に所定の変換を施してクライアントへ送信するステップと、
    クライアントから、前記マークアップ言語文書に対するユーザの操作に応じてクライアントサイドスクリプトを起動する処理要求を受けたとき、前記一時保存されたマークアップ言語文書に対して当該要求された処理を実行するステップと、
    前記コンテンツサーバへ当該要求された処理の実行結果および所定の要求を送信するステップと
    を備えたマークアップ言語文書変換方法。
  12. クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、
    受信したマークアップ言語文書を一時的に保存するステップと、
    前記受信したマークアップ言語文書に所定の変換を施してクライアントへ送信するステップと、
    クライアントから、前記マークアップ言語文書に対するユーザの操作に応じてクライアントサイドスクリプトを起動する処理要求を受けたとき、前記一時保存されたマークアップ言語文書に対して当該要求された処理を実行するステップと、
    前記コンテンツサーバへ当該要求された処理の実行結果および所定の要求を送信するステップと
    をコンピュータに実行させるマークアップ言語文書変換プログラム。
JP2009214964A 2009-09-16 2009-09-16 マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム Pending JP2011065385A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009214964A JP2011065385A (ja) 2009-09-16 2009-09-16 マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009214964A JP2011065385A (ja) 2009-09-16 2009-09-16 マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム

Publications (1)

Publication Number Publication Date
JP2011065385A true JP2011065385A (ja) 2011-03-31

Family

ID=43951566

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009214964A Pending JP2011065385A (ja) 2009-09-16 2009-09-16 マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム

Country Status (1)

Country Link
JP (1) JP2011065385A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016042227A (ja) * 2014-08-14 2016-03-31 日本電信電話株式会社 通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ
JPWO2018105335A1 (ja) * 2016-12-05 2019-10-24 オートリブ ディベロップメント エービー サイドエアバッグ装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002044907A1 (fr) * 2000-11-29 2002-06-06 Flex-Firm Inc. Procede servant a mettre a disposition des contenus
JP2003036223A (ja) * 2001-04-10 2003-02-07 Nec Corp マークアップ文書変換方式
JP2003058461A (ja) * 2001-08-17 2003-02-28 Hitachi Software Eng Co Ltd 情報入力用コンテンツの送受信方法およびシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002044907A1 (fr) * 2000-11-29 2002-06-06 Flex-Firm Inc. Procede servant a mettre a disposition des contenus
JP2003036223A (ja) * 2001-04-10 2003-02-07 Nec Corp マークアップ文書変換方式
JP2003058461A (ja) * 2001-08-17 2003-02-28 Hitachi Software Eng Co Ltd 情報入力用コンテンツの送受信方法およびシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016042227A (ja) * 2014-08-14 2016-03-31 日本電信電話株式会社 通信装置およびその動作方法、クライアント装置およびその動作方法、ならびにコンテンツデータ
JPWO2018105335A1 (ja) * 2016-12-05 2019-10-24 オートリブ ディベロップメント エービー サイドエアバッグ装置

Similar Documents

Publication Publication Date Title
US10671698B2 (en) Language translation using embeddable component
JP4340566B2 (ja) Webページ生成装置、組み込み装置、Webページ生成の制御方法、Webページ生成プログラム及び記録媒体
US9405745B2 (en) Language translation using embeddable component
KR100490734B1 (ko) 주석기반 문서 자동 생성장치 및 방법
US7305657B2 (en) Web server having function of Java servlet, method for updating Java program and computer program
US20030005159A1 (en) Method and system for generating and serving multilingual web pages
US20090271690A1 (en) Handling cross-domain web service calls
WO2009093643A1 (ja) マークアップ言語文書変換システム、装置、方法およびプログラム
CN102124481A (zh) 在具有广告的网页中嵌入宏
KR20010089173A (ko) 분산형 데이터 처리 시스템 상에서 래거시 애플리케이션에엑세스를 제공하기 위한 방법, 장치 및 컴퓨터 프로그램제조물
JP2011070640A (ja) デスクトップ・アプリケーションをウェブ・アプリケーションに変換する方法とシステム
JP2004334866A (ja) タグリブを介するウェブサイトサマリの変換
EP1320972A2 (en) Network server
US20020038349A1 (en) Method and system for reusing internet-based applications
US20100229081A1 (en) Method for Providing a Navigation Element in an Application
US6766350B1 (en) Shared management of data objects in a communication network
CN103577427A (zh) 基于浏览器内核的网页爬取方法、装置及包含该装置的浏览器
JP2006243829A (ja) ウェブコンテンツ変換方法およびウェブコンテンツ変換システム
JP2004164623A (ja) 表示データ生成装置、表示データ生成システム、表示データ生成方法、表示データ生成プログラム及び記録媒体
KR101453743B1 (ko) 웹 어플리케이션을 위한 사전 캐싱 방법 및 이를 적용한 단말 장치
US20030158894A1 (en) Multiterminal publishing system and corresponding method for using same
US9122484B2 (en) Method and apparatus for mashing up web applications
JP2005063412A (ja) 表示データ生成装置、表示装置、表示データ生成システム、表示データ生成装置の制御方法、表示データ生成プログラム、記録媒体、電子装置及び電子装置の制御方法
CN101876998B (zh) 一种实现数据编辑的方法和系统
US20220043546A1 (en) Selective server-side rendering of scripted web page interactivity elements

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20110707

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20110712

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130419

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130425

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20131001