Rules are based on the following languages:
HTML
JavaScript
XML
HTML content in web pages can be further classified into attributes, forms and applets. Accordingly, the rules for HTML content are classified as:
This rule identifies the attributes of a tag whose value needs to be rewritten. The attribute values can be a simple URL, JavaScript, or DHTML content. For example:
src attributes of an "img" tag point to an image location (simple URL)
onClick attribute of a href attributes that handles on clicking of the link (DJS)
This section describes the following:
<Attribute name="attributeName" [tag="*" valuePatterns="" source=”*” type=”URL|DHTML|DJS”]/>
where,
attributeName is the name of the attribute (mandatory)
tag is the tag to which the attribute belongs (optional, default * , meaning any tag)
valuePatterns See Using Pattern Matching in Rules.
source specifies the URI of the page in which this attribute is defined ( optional, default * , meaning in any page)
type specifies the type of the value (optional). They can be:
URL - a simple URL (default value).
DHMTL - DHTML content. This kind of content is seen in standard HTML content and is used in Microsoft’s HTC format files.
DJS - JavaScript content. All HTML event handlers such as onClick and onMouseover have JavaScript inlined with the HTML attribute.
Assume the base URL of the page is:
http://mymachine.intranet.com/mypage.html
Page Content:
<a href="http://mymachine.intranet.com/mypage.html">
Rules
<Attribute name="href"/> or <Attribute name="href" tag="a"/>
Output
<a href=gateway-URL/http://mymachine.intranet.com/myhome.html>
Description
Because the URL to be rewritten is already an absolute URL, only the Gateway URL is prefixed to the URL.
Assume the base URL of the page is:
http://abc.sesta.com/focus.html
Page Content:
<Form>
<input TYPE=TEXT SIZE=20 value=focus onClick="Check(\q/focus.html\q,\qfocus\q);return;">
</Form>
Rules
<Attribute name=”onClick” type=”DJS”/> <Function type="URL" name="Check" paramPatterns="y,"/>
Output
<Form>
<INPUT TYPE=TEXT SIZE=20 value=focus onClick="Check(\q gateway-URL /http://abc.sesta.com/focus.html\q,\qfocus\q);return;">
</Form>
Description
Two rules are required to rewrite the specified page content. The first rule identifies the onClick JavaScript token. The second rule identifies the parameter of the check function that needs to be rewritten. In this case, only the first parameter is rewritten because paramPatterns has the value y in place of first parameter.
The Gateway URL and the base URL of the page on which the JavaScript tokens appear are prefixed to the required parameter.
The HTML pages that a user browses may contain forms. Some form elements may take a URL as the value.
This section is divided into the following parts:
<Form name="form1" field="visit" [valuePatterns="" source="*"]/>
where
name is the name of the form (mandatory)
field is the field in the form whose value needs to be rewritten (mandatory)
valuePatterns See Using Pattern Matching in Rules
source is the URL of the html page where this form definition is present (optional, default *, meaning in any page)
Assume the base URL of the page is:
http://test.siroe.com/testcases/html/form.html
Page Content
Assume the page URI is form.html and is located in the root directory of the server.
<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>
To rewrite /text.html present in the value of hidden field named abc1 which is part of form1. The following rules are needed.
Rules
<Form source="*/form.html" name="form1" field="abc1" valuePatterns="0|1234|"/> <Attribute name="action"/>
Output
<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>
Description
The action tag is rewritten using some defined HTML attribute rule.
The input tag attribute value’s value is rewritten as shown in the output. The specified valuePatterns is located, and all content following the matched valuePatterns is rewritten by prefixing the Gateway URL, and the base URL of the page. See Using Pattern Matching in Rules.
A single web page may contain many applets, and each applet may contain many parameters. Rewriter matches the values specified in the rule with the HTML definition of the applet and modifies the URL values present as a part of the applet parameter definition. This replacement is carried out at the server and not when the user is browsing the particular web page. This rule identifies and rewrites the parameters in both the applet and object tags of the HTML content.
This section is divided into the following parts:
<Applet code="ApplicationClassName/ObjectID " param="parametername" [valuePatterns="" source="*"] />
where
code is the name of the applet or object class (mandatory)
param is the name of the parameter whose value needs to be rewritten (mandatory)
valuePatterns See Using Pattern Matching in Rules.
source is the URL of the page that contains the applet definition (optional, default is *, meaning, in any page)
Assume the base URL of the page is:
http://abc.siroe.com/casestudy/test/HTML/applet/rule1.html
Page Content:
<applet codebase=”appletcode” code=” RewriteURLinApplet.class” archive=”/test.jar”> <param name=Test1 value="/index.html"> </applet>
Rules
<Applet source="*/rule1.html" code= "RewriteURLin*.class" param="Test*"/>
Output
<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>
Description
The codebase attribute is rewritten because <Attribute name="codebase"/> is a defined rule in the default_gateway_ruleset.
All parameters whose names begin with Test are rewritten. The base URL of the page on which the applet code displays and the Gateway URL are prefixed to the value attribute of the param tag.
You can use the valuePatterns field to achieve pattern matching and identify the specific parts of a statement that need to be rewritten.
If you have specified valuePatterns as part of a rule, all the content that follows the matched pattern is rewritten.
Consider the sample form rule below.
<Form source="*/source.html " name="form1" field="visit " [valuePatterns="0|1234|"]/>
where
source is the URL of the html page where the form displays.
name is the name of the form.
field is the field in the form whose value needs to be rewritten.
valuePatterns indicates the portion of the string that needs to be rewritten. All content appearing after valuePatterns is rewritten (optional, default "" means the full value needs to be rewritten).
You can specify specialized characters by escaping them with a backslash. For example:
<Form source="*/source.html" name="form1" field="visit" [valuePatterns="0|1234|\\;original text|changed text”]/>
You can use the wildcard asterisk (*) character to achieve pattern matching for rewriting.
You cannot specify just an * in the valuePatterns field. Because * indicates a match with all text, no text follows the valuePattern. Therefore, Rewriter has no text to rewrite. You must use * in conjunction with another string such as *abc. In this case, all content that follows *abc is rewritten.
An asterisk (*) can be used as a wildcard in any of the fields of the rule. However, all the fields in the rule cannot contain an *. If all fields contain a *, the rule is ignored. No error message is displayed.
You can use a * or ** along with the separation character (a semicolon or comma) that displays in the original statement to separate multiple fields. One asterisk (*) matches any field that is not to be rewritten, and two asterisks (**) to match any field that needs to be rewritten.
Using Wild Cards in valuePatterns lists some sample usages of the * wildcard.
Table 4–1 Sample Usage of * Wildcard
URL |
valuePatterns |
Description |
---|---|---|
url1, url2, url3, url4 |
valuePatterns = "**, *, **, *" |
url1 and url3 are rewritten because ** indicates the portion to be rewritten |
XYZABChttp://host1.sesta.com/dir1.html |
valuePatterns = "*ABC" |
only the portion http://host1.sesta.com/dir1.html is rewritten. Everything after *ABC needs to be rewritten. |
"0|dir1|dir2|dir3|dir4|test|url1 |
valuePatterns = "*|*|**|*|**|*|" |
dir2, dir4 and url1 are rewritten. The last field that needs to be rewritten does not have to be indicated by using **. |
JavaScript can contain URLs in various locations. Rewriter cannot directly parse the JavaScript and determine the URL portion. A special set of rules need to be written to help the JavaScript processor to identify and translate the URL.
JavaScript elements with type URL are classified as follows:
<Variable name=”variableName“ [type="URL|EXPRESSION|DHTML|DJS|SYSTEM" source=”*”]>
JavaScript variables can be subclassified into 5 categories depending on the type of value they hold:
The variable value is a simple string which can be treated as a URL.
This section is divided into the following parts:
<Variable name=”variableName“ type="URL" [source=”*”]>
where
variableName is the name of the variable. The value of the variableName is rewritten (mandatory).
type is the URL variable (mandatory, and the value must to be a URL)
source is the URI of the page in which this JavaScript variable is found (optional, default is *, meaning in any page)
Assume the base URL is:
http://abc.siroe.com/tmp/page.html
Page Content
<script LANGUAGE="Javascript"> <!-- //URL Variables var imgsrc1="/tmp/tmp.jpg"; var imgsrc2="http://srap.sesta.com/tmp/tmp.jpg"; var imgsrc3=imgsrc2; //--> </SCRIPT>
Rules
<Variable name=”imgsrc*” type="URL"/>
Output
<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>
Description
All variables of type URL and name beginning with imgsrc are rewritten. For the first line of the output, the Gateway URL and the base URL of the page on which the variable displays are prefixed. The second line already contains the absolute path, and hence only the Gateway URL is prefixed. Third var imagsrc2 would not be rewritten as it’s value is not a string but another JavaScript value.
Expression variables have an expression on the right hand side. The result of this expression is a URL. Rewriter appends a JavaScript function (psSRAPRewriter_convert_expression) to the HTML page as it cannot evaluate such expressions on the server. This function takes the expression as a parameter and evaluates it to the required URL at the client browser.
If you are not sure whether a statement contains a simple URL or an EXPRESSION URL, use EXPRESSION rules because it can handle both scenarios.
This section is divided into the following parts:
<Variable name=”variableName” [type="EXPRESSION" source=”*”]/>
where
variableName is the name of the JavaScript variable whose value is a expression (mandatory)
type is the type of JavaScript variable (optional, default value is EXPRESSION)
source is the URI of the pages (optional, default is *, meaning any source)
Assume the base URL of the page is:
http://abc.siroe.com/dir1/dir2/page.html
Page Content
<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>
Rules
<Variable name=”expvar” type="EXPRESSION"/> or <Variable name=”expvar”/>
Output
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";
Description
The function psSRAPRewriter_convert_expression is prefixed to the right side of the expression variable expvar in the first line. This function processes the expression and rewrites the content at runtime. In the third line the value is rewritten as a simple URL.
These are JavaScript variables that contain HTML content.
This section is divided into the following parts:
<Variable name=”variableName” type="DHTML" [source=”*”]/>
where
variableName is the name of the JavaScript variable with DHTML content (mandatory)
type is the type of the variable (mandatory, the value must be DHTML)
source is the URL of the page (optional, the default is *, meaning in any page)
Assume the base URL of the page is:
http://abc.sesta.com/graphics/set1/ graphics/jsscript/JSVAR/page.html
Page Content
<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>
Rules
<Variable name=”dhtmlVar” type="DHTML"/> <Attribute name="href"/> or <Attribute name="href" tag="a"/>
Output
<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>
Description
The JavaScript parser reads the value of dhtmlVar as HTML content and sends the content through the HTML parser. The HTML parser applies the HTML rules where the href attribute rules are matched and hence the URL is rewritten.
These are JavaScript variables that contain JavaScript content.
This section is divided into the following parts:
<Variable name=”variableName” type="DJS" [source=”*”]/>
where
variable is the JavaScript varible whose value is javascript.
Assume the base URL of the page is:
http://abc.sesta.com/dir1/dir2/dir3/jscript/dir4/page.html
Page Content
//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;"
Rules
<Variable name="dJSVar" type="DJS"/> <Variable name="dJSimgsrc" type=URL"/>
Output
//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;"
Description
Two rules are required here. The first rule locates the dynamic JavaScript variable dJSVar. The value of this variable is again a JavaScript of type URL. The second rule is applied to rewrite the value of this JavaScript variable.
These are variables are not declared by the use and have limited support. They are available as a part of the JavaScript standard. For example, window.location.pathname.
This section is divided into the following parts:
<Variable name=”variableName” type="SYSTEM" [source=”*”]/>
where
variableName is the JavaScript system variable (mandatory and the values could be ones that match these patterns: document.URL, document.domain, location, doument.location, location.pathname, location.href, location.protocol, location.hostname, location.host and location.port. All these are present in the generic_ruleset. Do not modifiy these system var rules .
type specifies system type values (mandatory and value is SYSTEM)
source is the URI of this pages (optional, default value is *, meaning in any page)
Assume the base URL of the page is:
http://abc.siroe.com/dir1/page.html
Page Content
<script LANGUAGE="Javascript"> <!-- //SYSTEM Var alert(window.location.pathname); //--> </SCRIPT>
Rules
<Variable name=”window.location.pathname” type="SYSTEM"/>
Output
</SCRIPT> <SCRIPT LANGUAGE="Javascript"> <!-- //SYSTEM Var alert(psSRAPRewriter_convert_system(window.location.pathname)); //--> </SCRIPT>
Description
Rewriter locates the system variable which matches the rule, then the psSRAPRewriter_convert_system function is prefixed. This function processes the system variable at runtime and rewrites the resulting URL accordingly.
Function parameters whose value needs to be rewritten are classified into 4 categories:
<Function name="functionName" paramPatterns="y,y," [type="URL|EXPRESSION|DHTML|DJS" source=”*”]/>
where
name is the name of the JavaScript function (mandatory)
paramPatterns specifies the parameters that need to be rewritten (mandatory)
y the position of y indicates the parameter that the needs to be rewritten. For example, in the syntax, the first parameter needs to be rewritten, but the second parameter should not be rewritten.
type specifies the kind of value this parameter needs (optional, default is EXPRESSION type)
source page source URI (optional, default is *, meaning in any page)
Function takes this parameter as a string and this string could be treated as URL.
This section is divided into the following parts:
<Function name="functionName" paramPatterns="y,," type="URL" [source=”*”]/>
where
name is the name of the function with a type parameter of URL (mandatory)
paramPatterns specifies the parameters that need to be rewritten (mandatory)
y the position of y indicates the parameter that needs to be rewritten. For example, in the syntax, the first parameter needs to be rewritten, but the second parameter should not be rewritten.
type is the type of the function (mandatory, and the value must be URL)
source is the URL of the page which has this function call (optional, default is *, meaning in any URL)
Assume the base URL of the page is:
http://abc.sesta.com/test/rewriter/test1/jscript/test2/page.html
Page Content
<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>
Rules
<Function type="URL" name="test" paramPatterns="y,y,"/> <Function type="URL" name="window.open" paramPatterns="y,,,"/>
Output
<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>
Description
The first rule specifies that the first two parameters in the function with name test need to be rewritten. Hence the first two parameters of the test function are rewritten. The second rule specifies that the first parameter of the window.open function needs to be written. The URL within the window.open function is prefixed with the Gateway URL and the base URL of the page that contains the function parameters.
These parameters take an expression value, which when evaluated, results in a URL.
This section is divided into the following parts:
<Function name="functionName" paramPatterns="y" [type="EXPRESSION" source=”*”]/>
where
name is the name of the function (mandatory).
paramPatterns specifies the parameters that need to be rewritten (mandatory)
y the position of y indicates the function parameter that needs to be rewritten. In the syntax above, only the first parameter is rewritten.
type specifies the value EXPRESSION (optional)
source URI of the page where this function is called.
Assume the base URL of the page is:
http://abc.sesta.com/dir1/dir2/page.html
Page Content
<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>
Rules
<Function type="EXPRESSION" name="jstest1" paramPatterns="y"/> or <Function name="jstest1" paramPatterns="y"/>
Output
<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>
Description
The rule specifies that the first parameter of the jstest1 function needs to be rewritten by considering this as an EXPRESSION function param. In the sample page content, the first parameter is an expression that will be evaluated only at runtime. Rewriter prefixes this expression with the psSRAPRewriter_convert_expression function. The expression is evaluated, and the psSRAPRewriter_convert_expression function rewrites the output at runtime.
In the above example, the variable test1 is not required as a part of the JavaScript variable rule. The function rule for jstest1 takes care of the rewriting.
Function parameter whose value is HTML
Native JavaScript methods such as document.write() that generate an HTML page dynamically fall under this category.
This section is divided into the following parts:
<Function name="functionName" paramPatterns="y" type="DHTML" [source=”*”]/>
where
name is the name of the function.
paramPatterns specifies the parameters that need to be rewritten (mandatory)
y the position of y indicates the function parameter that needs to be rewritten. In the syntax above, only the first parameter is rewritten.
Assume the base URL of the page is:
http://xyz.siroe.com/test/rewriter/test1/jscript/JSFUNC/page.html
Page Content
<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>
Rules
<Function type="DHTML" name="document.write" paramPatterns="y"/> <Function type="DHTML" name="document.writeln" paramPatterns="y"/> <Attribute name="href"/>
Output
<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>
Description
The first rule specifies that the first parameter in the function document.write needs to be rewritten. The second rule specifies that the first parameter in the function document.writeln needs to be rewritten. The third rule is a simple HTML rule that specifies that all attributes with the name href need to be rewritten. In the example, the DHTML parameter rules identify the parameters in the functions that need to be rewritten. Then the HTML attribute rule is applied to actually rewrite the identified parameter.
Function parameters whose value is JavaScript.
This section is divided into the following sections:
<Function name="functionName" paramPatterns="y" type="DJS" [source=”*”]/>
where
name is the name of the function where one parameter is DJS (mandatory)
paramPatterns specifies which parameter in the above function is DJS (mandatory)
y the position of y indicates the function parameter that needs to be rewritten. In the syntax above, only the first parameter is rewritten.
type is DJS (mandatory)
source is the URI of the page (optional, default is *, meaning any URI)
Assume the base URL of the page is:
http://abc.sesta.com/page.html
Page Content
<script> menu.addItem(new NavBarMenuItem("All Available Information","JavaScript:top.location=\qhttp://abc.sesta.com\q")); </script>
Rules
<Function type="DJS" name="NavBarMenuItem" paramPatterns=",y"/> <Variable type="URL" name="top.location"/>
Output
<script> menu.addItem(new NavBarMenuItem("All Available Information", "JavaScript:top.location=\qgateway-URL/ http://abc.sesta.com\q")); </script>
Description
The first rule specifies that the second parameter of the function NavBarMenuItem which contains JavaScript needs is to be rewritten. Within the JavaScript, the variable top.location also needs to be rewritten. This variable is rewritten using the second rule.
Web pages may contain XML content which in turn can contain URLs. XML content that needs to be rewritten is classified into two categories:
This rule is for rewriting the PCDATA of CDATA of the tag element.
This section is divided into the following parts:
<TagText tag="tagName" [attributePatterns=”attribute_patterns_for_ this_tag" source=”*”]/>
where
tagName is the name of the tag
attributePatterns is the attributes and their value patterns for this tag (optional, meaning this tag has no attributes at all)
source is the URI of this xml file (optional, default is *, meaning, any xml page)
Assume the base URL of the page is:
http://abc.sesta.com/test/rewriter/test1/xml/page.html
Page Content
<xml> <Attribute name="src">test.html</attribute> <attribute>abc.html</attribute> </xml>
Rules
<TagText tag="attribute" attributePatterns="name=src"/>
Output
<xml> <Attribute name="src">gateway-URL/ http://abc.sesta.com/test/rewriter/test1/ xml/test.html</attribute><attribute>abc.html</attribute> </xml>
Description
The first line in the page content has an Attribute Example. The second line in the page content does not contain an attribute with the attribute called name and value of attribute name to be src, and hence no rewriting is done. To rewrite this also we need to have <TagText tag="attribute"/>
The rules for XML attributes are similar to the attribute rules for HTML. The difference is that attribute rules of XML are cases sensitive while HTML attribute rules are not. This is again due to case sensitivity built into XML and not into HTML.
Rewriter translates the attribute value based on the attribute name.
This section is divided into the following parts:
<Attribute name="attributeName" [tag="*" type=”URL” valuePatterns="*" source=”*”]/>
where
attributeName is the name of the attribute (mandatory)
tag is the name of the tag, where this attribute is present (optional, deafult is * , meaning any tag)
valuePatterns See Using Pattern Matching in Rules.
source is the URI of this XML page (optional, default is *, meaning in any XML page)
Assume the base URL of the page is:
http://abc.sesta.com/test/rewriter/test1/xml/page.html
Page Content
<xml> <baseroot href="/root.html"/> <img href="image.html"/> <string href="1234|substring.html"/> <check href="1234|string.html"/> </xml>
Rules
<Attribute name="href"tag="check" valuePatterns="1234|"/>
Output
<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>
Description
In the above example, only the fourth line is rewritten because it meets all the conditions specified in the rule. See Using Pattern Matching in Rules.
The Cascading Style Sheets (including CCS2) in HTML pages are translated. No rules are defined for this translation as the URL presents only in the url() functions and import syntaxes of the CSS.
WML is similar to HTML and hence HTML rules are applied for WML content.Use the generic ruleset for WML content. See Rules for HTML Content.
Rewriter uses the recursive feature to search to the end of the matched string pattern for the same pattern.
For example, when Rewriter parses the following string:
<a href="src=abc.jpg,src=bcd.jpg,src=xyz.jpg>
the rule
<Attribute name="href" valuePatterns="*src=**"/>
rewrites only the first occurrence of the pattern and it would look like this:
<a href="src=http://jane.sun.com/abc.jpg>
but if you use the recursive option as,
<Attribute name="href" valuePatterns="REC:*src=**"/>;
Rewriter searches to the end of the matched string pattern for the same pattern, hence the output would be:
<a href="src=http://jane.sun.com/abc.jpg,src=http://jane.sun.com/bcd.jpg,src=http://jane.sun.com/xyz.jpg>