Web ページの HTML コンテンツは、さらに属性、フォーム、およびアプレットに分類されます。これに従って、HTML コンテンツのルールは次のように分類されます。
このルールは値を書き換える必要のあるタグの属性を特定します。属性値には、簡易 URL、JavaScript、DHTML コンテンツがあります。次に例を示します。
画像の場所を示す「img」タグの src 属性 (簡易 URL)
リンクのクリックを処理する href 属性の onClick 属性 (DJS)
この節では、次の項目について説明します。
<Attribute name="attributeName" [tag="*" valuePatterns="" source="*" type="URL|DHTML|DJS"]/>
各表記の意味は次のとおりです。
attributeName は属性名です (必須)。
tag は、この属性が属するタグです (省略可能、デフォルト * は任意のタグを意味する)。
valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。
source は、この属性が定義されているページの URI を指定します (省略可能、デフォルト * は任意のページを意味する)。
type は関数のタイプを指定します (省略可能)。これには次の値があります。
URL : 簡易 URL (デフォルト値)
DHMTL : DHTML コンテンツ。この種類のコンテンツは、標準の HTML コンテンツに見られ、Microsoft の HTC 形式のファイルで使用されます。
DJS : JavaScript コンテンツ。onClick や onMouseover など、すべての HTML イベントハンドラには、HTML 属性に JavaScript が組み込まれています。
ページのベース URL が次の URL であると仮定します。
http://mymachine.intranet.com/mypage.html
ページコンテンツ:
<a href="http://mymachine.intranet.com/mypage.html">
ルール
<Attribute name="href"/> または <Attribute name="href" tag="a"/>
出力
<a href=gateway-URL/http://mymachine.intranet.com/myhome.html>
説明
書き換えられる URL はすでに絶対 URL であるため、ゲートウェイ URL だけがこの URL にプレフィックスとして追加されます。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/focus.html
ページコンテンツ:
<Form>
<input TYPE=TEXT SIZE=20 value=focus onClick="Check(\q/focus.html\q,\qfocus\q);return;">
</Form>
ルール
<Attribute name="onClick" type="DJS"/> <Function type="URL" name="Check" paramPatterns="y,"/>
出力
<Form>
<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check(\q gateway-URL /http://abc.sesta.com/focus.html\q,\qfocus\q);return;">
</Form>
説明
指定されたページコンテンツを書き換えるには、2 つのルールが必要です。最初のルールは onClick JavaScript トークンを特定します。2 番目のルールは、書き換えが必要な check 関数のパラメータを特定します。この場合、paramPatterns に値 y が指定されているため、最初のパラメータだけが書き換えられます。
ゲートウェイ URL と JavaScript トークンが表示されるベース URL が、必要なパラメータの前に指定されます。
ユーザーが参照する HTML ページにはフォームが含まれていることがあります。一部のフォーム要素は、値として URL をとることがあります。
この節は、次の項目から構成されています。
<Form name="form1" field="visit" [valuePatterns="" source="*"]/>
各表記の意味は次のとおりです。
name はフォーム名です (必須)。
field は値を書き換える必要があるフォームのフィールドです (必須)。
valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。
source は、このフォーム定義が存在するページの URL です (省略可能、デフォルト * は任意のページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://test.siroe.com/testcases/html/form.html
ページコンテンツ
ページ URI が form.html で、サーバーの root ディレクトリに格納されていると仮定します。
<form name=form1 method=POST action= "http://test.siroe.com/testcases/html/form.html"> <input type=hidden name=abc1 value="0|1234|/test.html"> </form>
form1 の一部である abc1 という隠しフィールドの値に含まれる /text.html を書き換えるとします。この場合、次のルールが必要です。
ルール
<Form source="*/form.html" name="form1" field="abc1" valuePatterns="0|1234|"/> <Attribute name="action"/>
出力
<FORM name="form1" method="POST" action="gateway-URL/ http://test.siroe.com/testcases/html/form.html"> <input type=hidden name=abc1 value="0|1234|gateway-URL/ http://test.siroe.com/test.html"> </FORM>
説明
action タグは定義済みのいくつかの HTML 属性ルールを使用して書き換えられます。
入力タグ属性値の value は、出力に示されるように書き換えられます。指定された valuePatterns が検索され、一致した valuePatterns に続くすべてのコンテンツは、先頭にゲートウェイ URL とページのベース URL を追加する方法で書き換えられます。「ルールでのパターンマッチングの使用」を参照してください。
単一の Web ページに複数のアプレットが含まれていたり、各アプレットに多くのパラメータが指定されていることがあります。リライタは、ルールに指定されている値とアプレットの HTML 定義を一致させ、アプレットのパラメータ定義の一部として含まれる URL の値を変更します。この置換はサーバーで実行され、ユーザーが特定の Web ページを参照しているときには行われません。このルールは、HTML コンテンツのアプレットタグとオブジェクトタグの両方のパラメータを識別し、それを書き換えます。
この節は、次の項目から構成されています。
<Applet code="ApplicationClassName/ObjectID " param="parametername" [valuePatterns="" source="*"] />
各表記の意味は次のとおりです。
code はアプレットクラスまたはオブジェクトクラスの名前です (必須)。
param は値を書き換える必要のあるパラメータの名前です (必須)。
valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。
source は、アプレット定義が存在するページの URL です (省略可能、デフォルト * は任意のページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.siroe.com/casestudy/test/HTML/applet/rule1.html
ページコンテンツ:
<applet codebase="appletcode" code=" RewriteURLinApplet.class" archive="/test.jar"> <param name=Test1 value="/index.html"> </applet>
ルール
<Applet source="*/rule1.html" code= "RewriteURLin*.class" param="Test*"/>
出力
<APPLET codebase="gateway-URL /http://abc.siroe.com/casestudy/test/HTML/ applet/appletcode" code="RewriteURLinApplet.class" archive="/test.jar"><param name="Test1" value=" gateway-URL/http: //abc.siroe.com/index.html"> </APPLET>
説明
default_gateway_ruleset に <Attribute name="codebase"/> が定義されているため、codebase attribute は書き換えられます。
名前が Test で始まるすべてのパラメータが書き換えられます。アプレットコードが表示されるページのベース URL、およびゲートウェイ URL が、param タグの value 属性の値の前に追加されます。
valuePatterns フィールドを使用してパターンマッチングを実行し、書き換えが必要な文の特定部分を識別することができます。
ルールの一部として valuePatterns を指定すると、一致したパターンに続くすべてのコンテンツが書き換えられます。
次のフォーム例のルールを考えます。
<Form source="*/source.html " name="form1" field="visit " [valuePatterns="0|1234|"]/>
各表記の意味は次のとおりです。
source は、フォームが表示される HTML ページの URL です。
name はフォーム名です。
field は値を書き換える必要があるフォームのフィールドです。
valuePatterns は、書き換えが必要な部分文字列を示します。valuePatterns のあとに表示されるすべてのコンテンツは書き換えられます (省略可能、デフォルト "" は値全体の書き換えが必要であることを示す)。
\ (円記号) でエスケープすることにより、特殊文字を指定できます。次に例を示します。
<Form source="*/source.html " name="form1" field=" visit" [valuePatterns="0|1234| \\;original text|changed text"]/>
ワイルドカードのアスタリスク (*) を使用して、書き換えのパターンマッチングを実行できます。
valuePatterns フィールドに * だけを指定することはできません。* はすべてのテキストとの一致を示すため、valuePattern に続くテキストがなくなります。したがって、リライタが書き換えるテキストもなくなります。* は *abc のように、ほかの文字列と組み合わせて使用する必要があります。この場合、*abc に続くすべてのコンテンツが書き換えられます。
アスタリスク (*) はルールのどのフィールドでも、ワイルドカードとして使用できます。ただし、ルールのすべてのフィールドに * を使用することはできません。すべてのフィールドに * が含まれている場合、ルールは無視されます。エラーメッセージは表示されません。
* や ** は、セミコロンやコンマなどの区切り文字と一緒に使用できます。区切り文字は、元の文に含まれる複数のフィールドを区切ります。1 個のアスタリスク (*) は書き換えられないフィールドと一致し、2 個のアスタリスク (**) は書き換えが必要なフィールドと一致します。
「valuePatterns でのワイルドカードの使用」は、* ワイルドカードの使用例を示しています。
表 4–1 * ワイルドカードの使用例
URL |
valuePatterns |
説明 |
---|---|---|
url1, url2, url3, url4 |
valuePatterns = "**, *, **, *" |
** が書き換えられる部分を表すため、url1 と url3 が書き換えられます。 |
XYZABChttp://host1.sesta.com/dir1.html |
valuePatterns = "*ABC" |
http://host1.sesta.com/dir1.html の部分だけが書き換えられます。*ABC のあとのすべてを書き換える必要があります。 |
"0|dir1|dir2|dir3|dir4|test|url1 |
valuePatterns = "*|*|**|*|**|*|" |
dir2、dir4、および url1 が書き換えられます。書き換えが必要な最後のフィールドは、** を使用して指定する必要はありません。 |