JP2011065385A - マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム - Google Patents
マークアップ言語文書変換装置、マークアップ言語文書変換方法、およびマークアップ言語文書変換プログラム Download PDFInfo
- 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
Links
Landscapes
- Document Processing Apparatus (AREA)
Abstract
【解決手段】変換サーバは、コンテンツサーバから受信したML文書がイベント属性付タグを含むフォームを含むかチェックする(S83)。そうであれば、イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、イベント属性としてのクライアントサイドスクリプトをフォームの送信内容に埋め込んで(S84)、クライアントへ送信する(S86)。変換サーバは、クライアントからフォームの選択結果情報とともにクライアントサイドスクリプトを受信したとき、選択結果情報に基づいて当該スクリプトを実行する(S90)。その結果、コンテンツサーバへ所定の要求および選択結果情報を送信する(S91)。
【選択図】図31
Description
form._Click.value = v; // formオジェクトが保持しているinputタグの中の_Clickという名前のオブジェクトのvalue属性に、引数vを上書き
form.submit(); // formオブジェクトのsubmit関数を呼びだして、formをJavaScriptから実行する
return false; // 通常submit()がうまく動作すればここには到達しないが、失敗した場合にfalseを返す
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を実行し、変換サーバからコンテンツサーバに送信 */
}
* - 指定ノード子孫の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属性に埋め込む際に先頭に追加するスクリプト
各行にコメントを付加すれば次のとおりである。
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;");
Claims (12)
- クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信する手段と、
受信したマークアップ言語文書がユーザに情報の入力を促すフォームを含み、かつ、このフォームが、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付タグを含むか否かをチェックする手段と、
前記イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段と、
この変更後のマークアップ言語文書をクライアントへ送信する手段と、
前記クライアントから前記フォームに対する選択結果情報とともに前記フォームの送信内容に埋め込まれたクライアントサイドスクリプトを受信する手段と、
前記クライアントから受信した選択結果情報に基づいて前記クライアントサイドスクリプトを実行する手段と、
前記クライアントサイドスクリプトの実行により前記コンテンツサーバへ所定の要求および前記選択結果情報を送信する手段と
を備えたマークアップ言語文書変換装置。 - 前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段において、前記イベント属性付タグが複数存在する場合、前記フォームの送信内容において、各イベント属性付タグと当該クライアントサイドスクリプトとを対応づけておき、前記クライアントから前記クライアントサイドスクリプトを受信したとき、前記クライアントにおいていずれの送信ボタンが指示されたかに応じて、対応するクライアントサイドスクリプトを実行する請求項1に記載のマークアップ言語文書変換装置。
- 前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込む手段において、前記コンテンツサーバから次に取得するマークアップ言語文書として前記クライアントから要求されたマークアップ言語文書と同じ文書を指定する請求項1または2に記載のマークアップ言語文書変換装置。
- 前記コンテンツサーバから受信したコンテンツを一時的に保存する手段と、前記クライアントから要求されたマークアップ言語文書と同じ文書を要求する際、前記一時的に保存したコンテンツを利用する手段とをさらに備えた請求項3に記載のマークアップ言語文書変換装置。
- クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、
受信したマークアップ言語文書がユーザに情報の入力を促すフォームを含み、かつ、このフォームが、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付タグを含むか否かをチェックするステップと、
前記イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップと、
この変更後のマークアップ言語文書をクライアントへ送信するステップと、
前記クライアントから前記フォームに対する選択結果情報とともに前記フォームの送信内容に埋め込まれたクライアントサイドスクリプトを受信するステップと、
前記クライアントから受信した選択結果情報に基づいて前記クライアントサイドスクリプトを実行するステップと、
前記クライアントサイドスクリプトの実行により前記コンテンツサーバへ所定の要求および前記選択結果情報を送信するステップと
を備えたマークアップ言語文書変換方法。 - 前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップにおいて、前記イベント属性付タグが複数存在する場合、前記フォームの送信内容において、各イベント属性付タグと当該クライアントサイドスクリプトとを対応づけておき、前記クライアントから前記クライアントサイドスクリプトを受信したとき、前記クライアントにおいていずれの送信ボタンが指示されたかに応じて、対応するクライアントサイドスクリプトを実行する請求項5に記載のマークアップ言語文書変換方法。
- 前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップにおいて、前記コンテンツサーバから次に取得するマークアップ言語文書として前記クライアントから要求されたマークアップ言語文書と同じ文書を指定する請求項5または6に記載のマークアップ言語文書変換方法。
- 前記コンテンツサーバから受信したコンテンツを一時的に保存するステップと、前記クライアントから要求されたマークアップ言語文書と同じ文書を要求する際、前記一時的に保存したコンテンツを利用するステップとを更に備えた請求項7に記載のマークアップ言語文書変換方法。
- クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、
受信したマークアップ言語文書がユーザに情報の入力を促すフォームを含み、かつ、このフォームが、所定のイベントに応じてクライアントサイドスクリプトを起動するイベント属性付タグを含むか否かをチェックするステップと、
前記イベント属性付タグを、送信ボタンを構成するインプットタグに変更するとともに、前記イベント属性として記述されたクライアントサイドスクリプトを前記フォームの送信内容に埋め込むステップと、
この変更後のマークアップ言語文書をクライアントへ送信するステップと、
前記クライアントから前記フォームに対する選択結果情報とともに前記フォームの送信内容に埋め込まれたクライアントサイドスクリプトを受信するステップと、
前記クライアントから受信した選択結果情報に基づいて前記クライアントサイドスクリプトを実行するステップと、
前記クライアントサイドスクリプトの実行により前記コンテンツサーバへ所定の要求および前記選択結果情報を送信するステップと
をコンピュータに実行させるマークアップ言語文書変換プログラム。 - クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信する手段と、
受信したマークアップ言語文書を一時的に保存する手段と、
前記受信したマークアップ言語文書に所定の変換を施してクライアントへ送信する手段と、
クライアントから、前記マークアップ言語文書に対するユーザの操作に応じてクライアントサイドスクリプトを起動する処理要求を受けたとき、前記一時保存されたマークアップ言語文書に対して当該要求された処理を実行する手段と、
前記コンテンツサーバへ当該要求された処理の実行結果および所定の要求を送信する手段と
を備えたマークアップ言語文書変換装置。 - クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、
受信したマークアップ言語文書を一時的に保存するステップと、
前記受信したマークアップ言語文書に所定の変換を施してクライアントへ送信するステップと、
クライアントから、前記マークアップ言語文書に対するユーザの操作に応じてクライアントサイドスクリプトを起動する処理要求を受けたとき、前記一時保存されたマークアップ言語文書に対して当該要求された処理を実行するステップと、
前記コンテンツサーバへ当該要求された処理の実行結果および所定の要求を送信するステップと
を備えたマークアップ言語文書変換方法。 - クライアントから要求されたマークアップ言語文書をコンテンツサーバから受信するステップと、
受信したマークアップ言語文書を一時的に保存するステップと、
前記受信したマークアップ言語文書に所定の変換を施してクライアントへ送信するステップと、
クライアントから、前記マークアップ言語文書に対するユーザの操作に応じてクライアントサイドスクリプトを起動する処理要求を受けたとき、前記一時保存されたマークアップ言語文書に対して当該要求された処理を実行するステップと、
前記コンテンツサーバへ当該要求された処理の実行結果および所定の要求を送信するステップと
をコンピュータに実行させるマークアップ言語文書変換プログラム。
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)
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)
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 | 情報入力用コンテンツの送受信方法およびシステム |
-
2009
- 2009-09-16 JP JP2009214964A patent/JP2011065385A/ja active Pending
Patent Citations (3)
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)
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 |