规则建立在下列语言基础上:
HTML
JavaScript
XML
网页中的 HTML 内容可进一步分成属性、表单和 applet。相应地,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 内容。所有 HTML 事件处理程序(如 onClick 和 onMouseover)都用此 HTML 属性嵌入 JavaScript。
假定页的基 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 为:
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>
描述
需要两项规则来重写指定的页内容。第一项规则确定 onClick JavaScript 标志。第二项规则确定 check 函数需要重写的参数。在本例中,只会重写第一个参数,因为 paramPatterns 用值 y 代替了第一个参数。
会在所需参数前加上网关 URL 以及这些 JavaScript 标志所在页的基 URL。
用户浏览的 HTML 页可能会包含表单。一些表单元素可能会以 URL 作为值。
本节分为下列各小部分:
<Form name="form1" field="visit" [valuePatterns="" source="*"]/>
其中
name 是表单的名称(强制项)
field 是表单中的字段,其中含有需要重写的值(强制项)
valuePatterns 参见在规则中使用模式匹配
source 是该表单定义所在 html 页的 URL(可选项,默认值是 *,指在任何页中)
假定页的基 URL 为:
http://test.siroe.com/testcases/html/form.html
页内容
假定页 URI 是 form.html,并且它位于服务器的根目录下。
<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,并通过在前面加上网关 URL 以及页的基 URL 来重写紧随在匹配的 valuePatterns 之后的所有内容。参见在规则中使用模式匹配。
单个网页可以包含许多 applet,而且每个 applet 可以包含许多参数。重写器将用规则中指定的值与 applet 的 HTML 定义进行匹配,并修改 applet 参数定义中出现的 URL 值。此替换在服务器处执行,用户浏览特定网页时并不会执行。此项规则会确定并重写 applet 以及 HTML 内容对象标记中的参数。
本节分为下列各小部分:
<Applet code="ApplicationClassName/ObjectID " param="parametername" [valuePatterns="" source="*"] />
其中
code 是 applet 或对象类的名称(强制项)
param 是值需要重写的参数的名称(强制项)
valuePatterns 参见在规则中使用模式匹配
source 是包含 applet 定义的页的 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>
描述
由于 <Attribute name="codebase"/> 是 default_gateway_ruleset 中的一项已定义规则,因此会重写 codebase 属性。
名称以 Test 开头的所有参数均会被重写。并且,会在 param 标记的 value 属性前加上 applet 代码所在页的基 URL 以及网关 URL。
您可以使用 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 之后的所有内容。
可在规则的任何字段中使用星号 (*) 作为通配符。不过,规则中的所有字段不能全都包含 *。如果所有字段都包含 *,则会忽略该规则。不会显示错误消息。
可以与原始语句中出现的分隔符(分号或逗号)联合使用 * 或 ** 来分隔多个字段。一个星号 (*) 匹配任何不进行重写的字段,而两个星号 (**) 匹配任何需要重写的字段。
在 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 为:
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。第二行已包含绝对路径,因此只在其前面加上了网关 URL。由于第三个 var imagsrc2 的值不是字符串,而是其他 JavaScript 值,所以不会对其进行重写。
表达式变量的右侧是一个表达式。该表达式的结果是一个 URL。由于重写器无法对服务器上的此类表达式求值,所以它会向 HTML 页追加一个 JavaScript 函数 (psSRAPRewriter_convert_expression)。该函数将此表达式视为一个参数,并在客户机浏览器中对其进行求值以得出所需的 URL。
如果不确定语句中包含的是简单 URL 还是 EXPRESSION URL,则使用 EXPRESSION 规则,因为它可以处理这两种情形。
本节分为下列各小部分:
<Variable name="variableName" [type="EXPRESSION" source="*"]/>
其中
variableName 是值为表达式的 JavaScript 变量的名称(强制项)
type 是 JavaScript 变量的类型(可选项,默认值是 EXPRESSION)
source 是页的 URI(可选项,默认值是 *,指任何源)
假定页的基 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";
描述
会在第一行的表达式变量 expvar 右侧的前面加上函数 psSRAPRewriter_convert_expression。该函数会在运行时处理此表达式并重写相应内容。在第三行中,值被重写为一个简单的 URL。
这些变量是包含 HTML 内容的 JavaScript 变量。
本节分为下列各小部分:
<Variable name="variableName" type="DHTML" [source="*"]/>
其中
variableName 是具有 DHTML 内容的 JavaScript 变量的名称(强制项)
type 是变量的类型(强制项,其值必须是 DHTML)
source 是页的 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 解析器会应用其中有 href 属性规则匹配的 HTML 规则,因此 URL 会被重写。
这些变量是包含 JavaScript 内容的 JavaScript 变量。
本节分为下列各小部分:
<Variable name="variableName" type="DJS" [source="*"]/>
其中
variable 是值为 javascript 的 JavaScript 变量。
假定页的基 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;"
描述
这里需要两项规则。第一项规则用于查找动态 JavaScript 变量 dJSVar。该变量的值同样是 URL 类型的 JavaScript。第二项规则用于重写该 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 中。不要修改这些系统变量规则。)
type 指定系统类型值(强制项,且值为 DJS)
source 是此页的 URI(可选项,默认值是 *,指在任何页中)
假定页的基 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 y 的位置指示需要重写的参数。例如,在语法中,第一个参数需要重写,但不能重写第二个参数
type 指定该参数所需值的类型(可选项,默认值是 EXPRESSION 类型)
source 是页的源 URI(可选项,默认值是 *,指在任何页中)
函数将该参数视为一个字符串并且该字符串可以作为 URL 对待。
本节分为下列各小部分:
<Function name="functionName" paramPatterns="y,," type="URL" [source="*"]/>
其中
name 是具有 URL 类型参数的函数的名称(强制项)
paramPatterns 指定需要重写的参数(强制项)
y y 的位置指示需要重写的参数。例如,在语法中,第一个参数需要重写,但不能重写第二个参数
type 是函数的类型(强制项,其值必须是 URL)
source 是具有该函数调用的页的 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 的函数中的前两个参数。因此会重写 test 函数的前两个参数。第二项规则指定需要重写 window.open 函数的第一个参数。会在 window.open 函数中的 URL 前面加上网关 URL 以及包含函数参数的页的基 URL。
这些参数接受表达式值,表达式计算结果为 URL。
本节分为下列各小部分:
<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source="*"]/>
其中
name 是函数的名称(强制项)
paramPatterns 指定需要重写的参数(强制项)
y y 的位置指示需要重写的函数参数。在上述语法中,只会重写第一个参数
type 指定 EXPRESSION 值(可选项)
source 是其中调用了该函数的页的 URI
假定页的基 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>
描述
此规则将 jstest1 函数的第一个参数视为 EXPRESSION 函数参数,以此来指定需要重写该参数。在示例页内容中,第一个参数是一个表达式,只会在运行时对其进行求值。重写器会在该表达式前加上 psSRAPRewriter_convert_expression 函数。此表达式要进行求值,并且 psSRAPRewriter_convert_expression 函数会在运行时重写输出结果。
在上述示例中,不需要在 JavaScript 变量规则中包含 test1。jstest1 的函数规则会负责执行重写工作。
值为 HTML 的函数参数
本机 JavaScript 方法(如可动态生成 HTML 页的 document.write())归属于这一类别。
本节分为下列各小部分:
<Function name="functionName" paramPatterns="y" type="DHTML" [source="*"]/>
其中
name 是函数的名称
paramPatterns 指定需要重写的参数(强制项)
y y 的位置指示需要重写的函数参数。在上述语法中,只会重写第一个参数
假定页的基 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 中的第一个参数。第二项规则指定需要重写函数 document.writeln 中的第一个参数。第三项规则是一项简单的 HTML 规则,它指定需要重写名为 href 的所有属性。在示例中,DHTML 参数规则将会确定函数中需要重写的参数。然后会应用 HTML 属性规则来实际重写已确定的参数。
值为 JavaScript 的函数参数。
本节分为下列各小部分:
<Function name="functionName" paramPatterns="y" type="DJS" [source="*"]/>
其中
name 是含有一个参数 DJS 的函数的名称(强制项)
paramPatterns 指定上述函数中的哪个参数是 DJS(强制项)
y y 的位置指示需要重写的函数参数。在上述语法中,只会重写第一个参数
type 为 DJS(强制项)
source 是页的 URI(可选项,默认值为 *,指任何 URI)
假定页的基 URL 为:
http://abc.sesta.com/page.html
页内容
<script> menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.com\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>
描述
第一项规则指定需要重写函数 NavBarMenuItem 中的第二个包含 JavaScript 的参数。在 JavaScript 中,变量 top.location 也需要重写。该变量是使用第二项规则来重写的。
网页可以包含 XML 内容,而后者又可以包含 URL。需要重写的 XML 内容分为以下两类:
本规则用于重写标记元素的 PCDATA 或 CDATA。
本节分为下列各小部分:
<TagText tag="tagName" [attributePatterns="attribute_patterns_for_ this_tag" source="*"]/>
其中
tagName 是标记的名称
attributePatterns 是与该标记相应的属性及其值模式(可选项,指该标记根本无任何属性)
source 是该 xml 文件的 URI(可选项,默认值是 *,指任何 xml 页)
假定页的基 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>
描述
页内容的第一行包含属性示例。页内容中的第二行不包含具有属性呼叫名称且属性名称值为 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 为:
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>
描述
在上述示例中,只会重写第四行,因为它满足规则中指定的所有条件。参见在规则中使用模式匹配。
HTML 页中的“层叠样式表”(包括 CCS2)会进行转换。由于 URL 只在 CSS 的 url() 函数和导入语法中出现,因此没有为这种转换定义任何规则。
WML 与 HTML 类似,因此 HTML 规则适用于 WML 内容。使用 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>