ルールは、次の言語に基づきます。
HTML
JavaScript
XML
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 が書き換えられます。書き換えが必要な最後のフィールドは、** を使用して指定する必要はありません。 |
JavaScript はさまざまな場所に URL を含んでいます。リライタは JavaScript を直接解析できないため、URL 部分を特定できません。JavaScript プロセッサで URL を識別、解釈できるようにするために、特別なルールセットを記述する必要があります。
URL を含む JavaScript 要素は次のように分類されます。
<Variable name="variableName" [type="URL|EXPRESSION|DHTML|DJS|SYSTEM" source="*"]>
JavaScript の変数は、その値の種類に応じてさらに次の 5 つのカテゴリに分類されます。
この変数の値は、URL として扱うことができる単純文字列です。
この節は、次の項目から構成されています。
<Variable name="variableName" type="URL" [source="*"]>
各表記の意味は次のとおりです。
variableName は変数名です。variableName の値が書き換えられます (必須)。
type は URL 変数です (必須、値は URL でなければならない)。
source は、この JavaScript 変数が含まれるページの URI です (省略可能、デフォルト * は任意のページを意味する)。
ベース URL が次の URL であると仮定します。
http://abc.siroe.com/tmp/page.html
ページコンテンツ
<script LANGUAGE="Javascript"> <!-- //URL Variables var imgsrc1="/tmp/tmp.jpg"; var imgsrc2="http://srap.sesta.com/tmp/tmp.jpg"; var imgsrc3=imgsrc2; //--> </SCRIPT>
ルール
<Variable name="imgsrc*" type="URL"/>
出力
<script LANGUAGE="Javascript"> <!-- //URL Variables var imgsrc="gateway-URL/http://abc.siroe.com/tmp/tmp.jpg"; var imgsrc="gateway-URL/http://srap.sesta.com/tmp/tmp.jpg"; var imgsrc3=imgsrc2; //--> </SCRIPT>
説明
タイプが URL で、名前が imgsrc から始まるすべての変数が書き換えられます。出力の最初の行では、ゲートウェイ URL と変数が表示されるページのベース URL が先頭に指定されます。2 行目にはすでに絶対パスが指定されているため、ゲートウェイ URL のみがプレフィックスとして追加されます。3 番目の変数 imagsrc2 は、値が文字列ではなく別の JavaScript 値であるため書き換えられません。
EXPRESSION 変数の右側には式が指定されます。この式の結果は URL です。リライタは、このような式をサーバーで評価できないため、HTML ページに JavaScript 関数 (psSRAPRewriter_convert_expression) を追加します。この関数はパラメータとして式をとり、クライアントブラウザで要求される URL に対して式を評価します。
文に含まれる URL が単一の URL であるか EXPRESSION URL であるかが明らかでないときは、どちらの場合にも適用できる EXPRESSION ルールを使用してください。
この節は、次の項目から構成されています。
<Variable name="variableName" [type="EXPRESSION" source="*"]/>
各表記の意味は次のとおりです。
variableName は、値として式を持つ JavaScript 変数の名前です (必須)。
type は JavaScript 変数のタイプです (省略可能、デフォルト値は EXPRESSION)。
source はページの URI です (省略可能、デフォルト * は任意のソースを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.siroe.com/dir1/dir2/page.html
ページコンテンツ
<script LANGUAGE="Javascript"> <!-- //Expression variables var expvar= getURIPreFix() + "../../images/graphics"+".gif"; document.write("<A HREF="+expvar+">Link to XYZ content</A><P>") var expvar="../../images/graphics"+".gif"; //--> </SCRIPT>
ルール
<Variable name="expvar" type="EXPRESSION"/> または <Variable name="expvar"/>
出力
var expvar=psSRAPRewriter_convert_expression(getURIPreFix() + "../../images/graphics"+".gif");document.write("<a href="+expvar+">> Link to XYZ content</A><P>")var expvar="gateway-URL/http://abc.siroe.com/images/graphics"+".gif";
説明
関数 psSRAPRewriter_convert_expression が、式変数 expvar の最初の行の右側の部分に先行して指定されます。この関数は、実行時に式を処理し、コンテンツを書き換えます。3 行目では、値が簡易 URL に書き換えられます。
これは HTML コンテンツを含む JavaScript 変数です。
この節は、次の項目から構成されています。
<Variable name="variableName" type="DHTML" [source="*"]/>
各表記の意味は次のとおりです。
variableName は DHTML コンテンツを持つ JavaScript 変数の名前です (必須)。
type は変数のタイプです (必須、値は DHTML である必要がある)。
source はページの URL です (省略可能、デフォルト * は任意のページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/graphics/set1/ graphics/jsscript/JSVAR/page.html
ページコンテンツ
<script LANGUAGE="Javascript"> <!-- //DHTML Var var dhtmlVar="<a href=../../images/test.html>" var dhtmlVar="<a href=/images/test.html>" var dhtmlVar="<a href=images/test.html>" //--> </SCRIPT>
ルール
<Variable name="dhtmlVar" type="DHTML"/> <Attribute name="href"/> または <Attribute name="href" tag="a"/>
出力
<script LANGUAGE="Javascript"> <!-- //DHTML Var var dhtmlVar="<a href=gateway-URL /http://abc.sesta.com/graphics/ set1/graphics/images/test.html>" var dhtmlVar="<a href=gateway-URL/ http ://abc.sesta.com/images/test.html>" var dhtmlVar="<a href=gateway-URL/ http://abc.sesta.com/graphics/set1/ graphics/jscript/JSVAR/images/test.html>" //--></SCRIPT>
説明
JavaScript パーサーは dhtmlVar の値を HTML コンテンツとして読み取り、HTML パーサー経由でそのコンテンツを送信します。HTML パーサーは HTML ルールを適用するため、href 属性ルールとの一致によって URL が書き換えられます。
これは JavaScript コンテンツを含む JavaScript 変数です。
この節は、次の項目から構成されています。
<Variable name="variableName" type="DJS" [source="*"]/>
各表記の意味は次のとおりです。
variable は JavaScript を値として持つ JavaScript 変数の名前です。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html
ページコンテンツ
//DJS Var var dJSVar="var dJSimgsrc=\q/tmp/tmp.jpg\q;" var dJSVar="var dJSimgsrc=\q../tmp/tmp.jpg\q;" var dJSVar="var dJSimgsrc= \qhttp://abc.sesta.com/tmp/tmp.jpg\q;"
ルール
<Variable name="DJS">dJSVar/> <Variable name="URL">dJSimgsrc/>
出力
//DJS Var - need 2 rules var dJSVar="var dJSimgsrc=\qgateway-URL /http://abc.sesta.com/tmp/tmp.jpg\q;"var dJSVar="var dJSimgsrc=\q gateway-URL/http ://abc.sesta.com/dir1/dir2/dir3/jscript/tmp/tmp.jpg\q;" var dJSVar="var dJSimgsrc=\qgateway-URL/ http://abc.sesta.com/tmp/tmp.jpg\q;"
説明
ここでは、2 つのルールが必要です。最初のルールはダイナミック JavaScript 変数 dJSVar を検索します。この変数の値は、同じくタイプが URL の JavaScript になります。次に 2 番目のルールが適用され、この JavaScript 変数の値が書き換えられます。
これらは、使用によって宣言されない変数であり、サポートは限定されます。これらの変数は JavaScript 標準の一部として利用可能です。たとえば、window.location.pathname などがあります。
この節は、次の項目から構成されています。
<Variable name="variableName" type="SYSTEM" [source="*"]/>
各表記の意味は次のとおりです。
variableName は、JavaScript のシステム変数です (必須)。値は document.URL、document.domain、location、doument.location、location.pathname、location.href、location.protocol、location.hostname、location.host、および location.port のいずれかのパターンと一致する必要があります。これは、すべて generic_ruleset に含まれます。これらのシステム var ルールを変更しないでください。
type には、システムタイプの値を指定します (必須、値は DJS)。
source はそのページの URL です (省略可能、デフォルト * は任意のページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.siroe.com/dir1/page.html
ページコンテンツ
<script LANGUAGE="Javascript"> <!-- //SYSTEM Var alert(window.location.pathname); //--> </SCRIPT>
ルール
<Variable name="window.location.pathname" type="SYSTEM"/>
出力
</SCRIPT> <SCRIPT LANGUAGE="Javascript"> <!-- //SYSTEM Var alert(psSRAPRewriter_convert_pathname(window.location.pathname)); //--> </SCRIPT>
説明
リライタは、ルールと一致するシステム変数を検索し、プレフィックスとして psSRAPRewriter_convert_system 関数を追加します。この関数は、実行時にシステム変数を処理し、処理後の URL を書き換えます。
値の書き換えが必要な関数パラメータは、次の 4 つのカテゴリに分類されます。
<Function name="functionName " paramPatterns="y,y," [type="URL|EXPRESSION|DHTML|DJS" source="*"]/>
各表記の意味は次のとおりです。
name は JavaScript 関数の名前です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要なパラメータを示します。たとえば、構文の最初のパラメータは書き換えるが、2 番目のパラメータは書き換えない、という指定が可能です。
type はこのパラメータが必要とする値の種類を指定します (省略可能、デフォルトは EXPRESSION タイプ)。
source はページのソース URI です (省略可能、デフォルト * は任意のページを意味する)。
関数は、このパラメータを文字列としてとり、この文字列は URL として扱うことができます。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y,," type="URL" [source="*"]/>
各表記の意味は次のとおりです。
name は、パラメータのタイプが URL である関数の名前です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要なパラメータを示します。たとえば、構文の最初のパラメータは書き換えるが、2 番目のパラメータは書き換えない、という指定が可能です。
type は関数のタイプです (必須、値は URL である必要がある)。
source は、この関数の呼び出しが含まれるページの URL です (省略可能、デフォルト * は任意の URL を意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html
ページコンテンツ
<script language="JavaScript"> <!-- function test(one,two,three){ alert(one + "##" + two + "##" +three); } test("/test.html","../test.html","123"); window.open("/index.html","gen",width=500,height=500); //--> </SCRIPT>
ルール
<Function name="URL" name="test" paramPatterns="y,y,"/> <Function name="URL" name="window.open" paramPatterns="y,,,"/>
出力
<SCRIPT language="JavaScript"> <!-- function test(one,two,three) { alert(one + "##" + two + "##" +three); } test("gateway-URL/http://abc.sesta.com/test.html"," gateway-URL/http://abc.sesta.com/test/rewriter/ test1/jscript/test.html","123");window.open("gateway-URL/ http://abc.sesta.com/index.html","gen",width=500,height=500); //--> </SCRIPT>
説明
最初のルールは、関数 test の最初の 2 つのパラメータを書き換える必要があることを示します。したがって、test 関数の最初の 2 つのパラメータが書き換えられます。2 番目のルールは、window.open 関数の最初のパラメータを書き換える必要があることを示します。window.open 関数内の URL の先頭に、ゲートウェイ URL と、関数パラメータが含まれるページのベース URL が追加されます。
このパラメータは、値として式をとり、この式の評価結果が URL となります。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source="*"]/>
各表記の意味は次のとおりです。
name は関数名です (必須)。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
type は、式の値のタイプを指定します (省略可能)。
source は、この関数を呼び出すページの URI です。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/dir1/dir2/page.html
ページコンテンツ
<script language="JavaScript"> <!-- function jstest2(){ return ".html"; } function jstest1(one){ return one; } var dir="/images/test" var test1=jstest1(dir+"/test"+jstest2()); document.write("<a HREF="+test1+">TEST</a>"); alert(test1); //--> </SCRIPT>
ルール
<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/> または <Function name="jstest1" paramPatterns="y"/>
出力
<script language="JavaScript"> <!-- function jstest2(){ return ".html"; } function jstest1(one){ return one; } var dir="/images/test" var test1=jstest1(psSRAPRewriter_convert_expression(dir+"/test"+jstest2())); document.write("<a HREF="+test1+">TEST</a>"); alert(test1); //--> </SCRIPT>
説明
このルールは、これが EXPRESSION 関数のパラメータであると見なすことによって、jstest1 関数の最初のパラメータを書き換える必要があることを示します。ページコンテンツの例では、最初のパラメータは実行時にだけ評価される式です。リライタはこの式の先頭に psSRAPRewriter_convert_expression 関数を追加します。式が評価され、psSRAPRewriter_convert_expression 関数は実行時に出力を書き換えます。
上の例では、JavaScript 変数ルールの一部として、変数 test1 は必要ありません。書き換えは、jstest1 の関数ルールによって行われます。
これは、値が HTML の関数パラメータです。
HTML ページをダイナミックに生成する document.write() などのネイティブ JavaScript メソッドは、このカテゴリに分類されます。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" type="DHTML" [source="*"]/>
各表記の意味は次のとおりです。
name は関数名です。
paramPatterns は、書き換えが必要なパラメータを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
ページのベース URL が次の URL であると仮定します。
http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html
ページコンテンツ
<script> <!-- document.write(\q<a href="/index.html">write</a><BR>\q) document.writeln(\q<a href="index.html">writeln</a><BR>\q) document.write("http://abc.sesta.com/index.html<BR>") document.writeln("http://abc.sesta.com/index.html<BR>") //--> </SCRIPT>
ルール
<Function name="DHTML" name="document.write" paramPatterns="y"/> <Function name="DHTML" name="document.writeln" paramPatterns="y"/> <Attribute name="href"/>
出力
<SCRIPT> <!-- document.write(\q<a href="gateway-URL/ http://xyz.siroe.com/index.html">write</a><BR>\q) document.writeln(\q<a href="gateway-URL/ http://xyz.siroe.com/test/rewriter/test1/ jscript/JSFUNC/index.html">writeln</a><BR>\q) document.write("http://abc.sesta.com/index.html<BR>") document.writeln("http://abc.sesta.com/index.html<BR>") //--> </SCRIPT>
説明
最初のルールは、関数 document.write の最初のパラメータを書き換える必要があることを示します。2 番目のルールは、関数 document.writeln の最初のパラメータを書き換える必要があることを指定します。3 番目のルールは、名前に href を含むすべての属性を書き換える必要があることを指定する簡単な HTML ルールです。この例では、DHTML パラメータルールは関数内の書き換えの必要があるパラメータを特定します。この場合、HTML 属性ルールが適用され、特定されたパラメータが実際に書き換えられます。
これは、値が JavaScript の関数パラメータです。
この節は、次の項目から構成されています。
<Function name="functionName" paramPatterns="y" type="DJS" [source="*"]/>
各表記の意味は次のとおりです。
name は、1 つのパラメータが DJS である関数の名前です (必須)。
paramPatterns は、上の関数のどのパラメータが DJS であるかを指定します (必須)。
y によって指定される位置は、書き換えが必要な関数パラメータを示します。上の構文では、最初のパラメータだけが書き換えられます。
type は DJS です (必須)。
source はページの URI です (省略可能、デフォルト * は任意の URI を意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/page.html
ページコンテンツ
<script> menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.co m\q")); </script>
ルール
<Function name="DJS" name="NavBarMenuItem" paramPatterns=",y"/> <Variable name="URL">top.location</Variable>
出力
<script> menu.addItem(new NavBarMenuItem("All Available Information", "JavaScript:top.location=\qgateway-URL/ http://abc.sesta.com\q")); </script>
説明
最初のルールは、JavaScript を含む関数 NavBarMenuItem の 2 番目のパラメータを書き換える必要があることを指定します。JavaScript 内で、変数 top.location も書き換える必要があります。この変数は 2 番目のルールを使用して書き換えられます。
Web ページには、URL を含む XML コンテンツが含まれていることがあります。書き換えが必要な XML コンテンツは、2 つのカテゴリに分類されます。
このルールは、タグ要素の PCDATA または CDATA を書き換えるためのものです。
この節は、次の項目から構成されています。
<TagText tag="tagName" [attributePatterns="attribute_patterns_for_ this_tag" source="*"]/>
各表記の意味は次のとおりです。
tag はタグ名です。
attributePatterns はこのタグの属性と属性値パターンです (省略可能、省略した場合はこのタグは属性を一切持たない)。
source はこの XML ファイルの URI です (省略可能、デフォルト * は任意の XML ページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/test/rewriter/test1/xml/page.html
ページコンテンツ
<xml> <Attribute name="src">test.html</attribute> <attribute>abc.html</attribute> </xml>
ルール
<TagText tag="attribute" attributePatterns="name=src"/>
出力
<xml> <Attribute name="src">gateway-URL/ http://abc.sesta.com/test/rewriter/test1/ xml/test.html</attribute><attribute>abc.html</attribute> </xml>
説明
ページコンテンツの最初の行には 「属性の例」が含まれます。ページコンテンツの 2 行目には、名前が name で値が src の属性が含まれず、書き換えは行われません。これを書き換えるには、<TagText tag="attribute"/> も必要です。
XML 属性のルールは、HTML の属性ルールに似ています。違いは、XML の属性ルールでは大文字と小文字が区別され、HTML の属性ルールでは区別されないことです。これは、XML では大文字と小文字が区別され、HTML では区別されないためです。
リライタは、属性名に基づいて属性値を変換します。
この節は、次の項目から構成されています。
<Attribute name="attributeName " [tag="*" type="URL" valuePatterns="*" source="*"]/>
各表記の意味は次のとおりです。
attributeName は属性名です (必須)。
tag は、この属性が含まれるタグの名前です (省略可能、デフォルト * は任意のタグを意味する)。
valuePatterns については、「ルールでのパターンマッチングの使用」を参照してください。
source は XML ページの URI です (省略可能、デフォルト * は任意の XML ページを意味する)。
ページのベース URL が次の URL であると仮定します。
http://abc.sesta.com/test/rewriter/test1/xml/page.html
ページコンテンツ
<xml> <baseroot href="/root.html"/> <img href="image.html"/> <string href="1234|substring.html"/> <check href="1234|string.html"/> </xml>
ルール
<Attribute name="href"tag="check" valuePatterns="1234|"/>
出力
<xml> <baseroot href="/root.html"/><img href="image.html"/> <string href="1234|substring.html"/><check href="1234| gateway-URL /http://abc.sesta.com/test/rewriter/test1/xml/string.html"/></xml>
説明
前述した例では、4 行目だけがルールに指定されたすべての条件と一致するため、書き換えられます。「ルールでのパターンマッチングの使用」を参照してください。
HTML ページのカスケードスタイルシート (CSS2 も含まれる) も変換されます。この変換のために定義されるルールはありません。これは、URL が CSS の url() 関数とインポート構文にだけ表示されるためです。
WML は HTML に似ているため、WML コンテンツには HTML ルールが適用されま す。WML コンテンツの汎用ルールセットを使用してください。「HTML コンテンツのルール」を参照してください。
リライタは、再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。
たとえば、リライタが次の文字列を解析する場合を考えます。
<a href="src=abc.jpg,src=bcd.jpg,src=xyz.jpg>
次のルールがあるとします。
<Attribute name="href" valuePatterns="*src=**"/>
このルールは、最初に見つかったパターンだけを次のように書き換えます。
<a href="src=http://jane.sun.com/abc.jpg>
一方、次のように再帰オプションを使用した場合を考えます。
<Attribute name="href" valuePatterns="REC:*src=**"/>;
リライタは再帰機能を使用して、一致する文字列パターンの最後まで同じパターンを検索します。この出力は次のようになります。
<a href="src=http://jane.sun.com/abc.jpg,src= http://jane.sun.com/bcd.jpg,src=http://jane.sun.com/xyz.jpg>