Defining content-type parsers in responses for HAT configuration in IAG
Applies To: Intelligent Application Gateway (IAG)
When configure host access translation (HAT) properties in Whale Communications Intelligent Application Gateway (IAG) 2007, you can configure additional tags that will be parsed by the content-type parsers in responses. By default, the content-type parsers are configured so that all tags that can contain links are parsed during data manipulation. This topic describes how to configure tags for the HTML and JavaScript parsers. For more information about HAT, see About host address translation (HAT) in IAG portals.
Configuring the HTML parser
In IAG the HTML parser is used in responses only. It is defined in the Application Access Portal configuration file in the element <PARSER_HTML>, described below.
<PARSER_HTML>
Description
Defines all the HTML tags and event handlers that are parsed; the links that are found within those tags and event handlers are manipulated, as described in Host Address Translation. By default, the parser is configured to parse all standard tags and event handlers that contain links. You can edit the file to add other non-standard tags or event handlers, which might contain links in your application.
Usage
Only one <PARSER_HTML> element must reside in the AAP configuration file.
Attributes & Attribute Values
None.
Child Elements
<PARSER_HTML> can contain one <EVENT_HANDLERS> element.
<PARSER_HTML> can contain an unlimited number of <TAG> elements.
[<PARSER_HTML>] > [<EVENT_HANDLERS>]
<EVENT_HANDLERS>
Description
Child element of <PARSER_HTML>. Defines HTML and DHTML event handlers that will be parsed. The event handlers are associated with the HTML tags via tag attributes. When an event handler is configured to be parsed, it is parsed in all the tags that the parser handles (defined in the <TAG> elements).
For each event handler, you can configure a list of “exclude” tags, in which the handler will not be parsed.
In order to parse an event handler only in a selected tag (or tags), define it as part of the tag definition, in an <ATTR> element.
Usage
Optional
One <EVENT_HANDLERS> element can reside under <PARSER_HTML>.
Attributes & Attribute Values
None.
Child Elements
<EVENT_HANDLERS> can contain an unlimited number of <HANDLER> elements, described below.
[<PARSER_HTML>] > [<EVENT_HANDLERS>] > [<HANDLER>]
<HANDLER>
Description
Child element of <EVENT_HANDLERS>. Defines the HTML or DHTML event handler that will be parsed.
Usage
An unlimited number of <HANDLER> elements can be nested under <EVENT_HANDLERS>.
Attributes & Attribute Values
Attribute | Values | Type or comments |
---|---|---|
parser |
PARSER_EXCEPTION PARSER_SAR |
Mandatory. Defines the parser that will parse the script within the event handler:
|
Child Elements
<HANDLER> must contain one <NAME> element, described below.
<HANDLER> can contain an unlimited number of <EXCLUDE> elements.
[<PARSER_HTML>] > [<EVENT_HANDLERS>] > [<HANDLER>] > [<NAME>]
<NAME>
Description
Child element of <HANDLER>. Defines the name of the event handler that will be parsed.
Usage
Only one <NAME> element must be nested under each <HANDLER> element.
Attributes & Attribute Values
None.
Child Elements
None.
[<PARSER_HTML>] > [<EVENT_HANDLERS>] > [<HANDLER>] > [<EXCLUDE>]
<EXCLUDE>
Description
Child element of <HANDLER>. Defines an HTML tag in which the event handler, defined in <NAME>, will not be parsed.
Usage
<EXCLUDE> is optional.
An unlimited number of <EXCLUDE> elements can be nested under each <HANDLER> element.
Attributes & Attribute Values
None.
Child Elements
None.
[<PARSER_HTML>] > [<TAG>]
<TAG>
Description
Child element of <PARSER_HTML>. Defines the tag that will be parsed.
Usage
At least one <TAG> element must reside under <PARSER_HTML>.
An unlimited number of <TAG> elements can reside under <PARSER_HTML>.
Attributes & Attribute Values
Attribute | Values | Type or comments |
---|---|---|
replace_att |
true, false |
Optional. Searches for and manipulates links inside the defined tag attributes. |
sar |
true, false |
Optional. Searches for and manipulates links in the entire tag. |
tag_delimiter |
Delimiter of the tag defined in the <NAME> child element. |
Optional. Must be used if sar=true. Examples:
|
Note
In each <TAG>, at least one of the following attributes must have a true value:
replace_att sar In each <TAG>, both attributes can be true.Child Elements
<TAG> must contain one <NAME> element, described below.
<TAG> can contain only one <NAME> element.
When replace_att=true, <TAG> must contain at least one <ATTR> element.
When replace_att=true, <TAG> can contain an unlimited number of <ATTR> elements.
[<PARSER_HTML>] > [<TAG>] > [<NAME>]
<NAME>
Description
Child element of <TAG>. Defines the name of the tag to be parsed.
Usage
Only one <NAME> element must reside under <TAG>.
Attributes & Attribute Values
None.
Child Elements
None.
[<PARSER_HTML>] > [<TAG>] > [<ATTR>]
<ATTR>
Description
Child element of <TAG>. Used only when, in the definition of <TAG>, replace_att=true. Defines the attribute that will be parsed within the tag defined in <NAME>.
Usage
If, in the definition of <TAG>, replace_att=true, one <ATTR> element must reside under <TAG>.
If, in the definition of <TAG>, replace_att=true, an unlimited number of <ATTR> elements can reside under <TAG>.
Attributes & Attribute Values
None.
Child Elements
None.
Sample Code: <PARSER_HTML>
<PARSER_HTML>
<!--This tag holds the configuration of the html parser.
For each tag there are three actions:
1. Event handlers that contain JavaScript executable code.
2. replace_attr (in which the attr to replace should be
specified)
3. sar (in which case the delimiter of the tag should be
specified)
<EVENT_HANDLERS>
<!-- Each event handler can have an exclude list of all
the HTML tags in which the event handler will not be
parsed. In the following example, the OnClick
handler will not be parsed by the HTML parser when
it appears in the tag a:
<HANDLER parser="PARSER_JAVASCRIPT">
<NAME>OnClick</NAME>
<EXCLUDE>a</EXCLUDE>
</HANDLER>
-->
<!-- HTML event handlers -->
<HANDLER parser="PARSER_JAVASCRIPT">
<NAME>OnClick</NAME>
</HANDLER>
<HANDLER parser="PARSER_JAVASCRIPT">
<NAME>OnDblClick</NAME>
</HANDLER>
<HANDLER parser="PARSER_JAVASCRIPT">
<NAME>OnMouseDown</NAME>
</HANDLER>
<!-- DHTML event handlers -->
<HANDLER parser="PARSER_JAVASCRIPT">
<NAME>OnBounce</NAME>
</HANDLER>
<HANDLER parser="PARSER_JAVASCRIPT">
<NAME>OnScroll</NAME>
</HANDLER>
</EVENT_HANDLERS>
<!--
==========================================================
==========================================================
TAGS which have a list of replaceable attributes
==========================================================
==========================================================
-->
<TAG replace_attr="true" sar="false" tag_delimiter="">
<NAME>a</NAME>
<ATTR>href</ATTR>
</TAG>
<TAG replace_attr="true" sar="false" tag_delimiter="">
<NAME>area</NAME>
<ATTR>href</ATTR>
</TAG>
<TAG replace_attr="true" sar="false" tag_delimiter="">
<NAME>base</NAME>
<ATTR>href</ATTR>
</TAG>
<TAG replace_attr="true" sar="false" tag_delimiter="">
<NAME>blockquote</NAME>
<ATTR>cite</ATTR>
</TAG>
<TAG replace_attr="true" sar="false" tag_delimiter="">
<NAME>body</NAME>
<ATTR>background</ATTR>
</TAG>
<TAG replace_attr="true" sar="false" tag_delimiter="">
<NAME>button</NAME>
</TAG>
<TAG replace_attr="true" sar="false" tag_delimiter="">
<NAME>del</NAME>
<ATTR>cite</ATTR>
</TAG>
<TAG replace_attr="true" sar="false" tag_delimiter="">
<NAME>embed</NAME>
<ATTR>pluginspage</ATTR>
<ATTR>src</ATTR>
</TAG>
</PARSER_HTML>
Configuring the JavaScript parser
The JavaScript parser is only used in responses. It is defined in the AAP configuration file in the element <PARSER_EXCEPTION>, described below.
Tip
When you configure the manipulation of a tag in the parser, the parser searches for the tag in all responses. If you wish to apply the manipulation to a limited number of URLs, you can apply token-to-token replacement to the specific URLs, thus enhancing system performance.
<PARSER_EXCEPTION>
Description
Defines all the JavaScript commands that are parsed; the links that are found within those commands are manipulated. By default, the parser is configured to parse all standard commands that contain links. You can edit the file in order to add other non-standard commands, which might contain links in your application.
Usage
Only one <PARSER_EXCEPTION> element must reside in the AAP configuration file.
Attributes & Attribute Values
None.
Child Elements
<PARSER_EXCEPTION> must contain at least one <SEARCH> element.
<PARSER_EXCEPTION> can contain an unlimited number of <SEARCH> elements.
[<PARSER_EXCEPTION>] > [<SEARCH>]
<SEARCH>
Description
Child element of <PARSER_EXCEPTION>. Defines the command to be parsed and the command’s operation character.
Usage
At least one <SEARCH> element must be nested under <PARSER_EXCEPTION>.
An unlimited number of <SEARCH> elements can be nested under <PARSER_EXCEPTION>.
Attributes & Attribute Values
Attribute | Values | Type or comments |
---|---|---|
opr_char |
( - |
Mandatory. Defines the operation character: function opening or implementation, respectively. |
encoding |
base64 |
Optional. |
Child Elements
None.
Sample Code
The following sample configures the JavaScript parser to search for links in the command openNewWindow, with the following attributes:
The command character is directly followed by an opening parenthesis; therefore, the operation character is (.
Encoding is not used.
<SEARCH start="(" encoding="">openNewWindow</SEARCH>
Sample Code: <PARSER_EXCEPTION>
<PARSER_EXCEPTION>
<!-- This TAG holds Java Script configuration -->
<SEARCH opr_char="(" encoding="">openNewWindow</SEARCH>
<SEARCH opr_char="(" encoding="">openInnewWindow</SEARCH>
<SEARCH opr_char="(" encoding="">openWin</SEARCH>
<SEARCH opr_char="(" encoding="">open</SEARCH>
<SEARCH opr_char="(" encoding="">load</SEARCH>
<SEARCH opr_char="(" encoding="">url</SEARCH>
<SEARCH opr_char="(" encoding="">location.replace</SEARCH>
<SEARCH opr_char="=" encoding="">href</SEARCH>
<SEARCH opr_char="=" encoding="">location</SEARCH>
<SEARCH opr_char="=" encoding="">location.href</SEARCH>
<SEARCH opr_char="=" encoding="">selecter1.action</SEARCH>
<SEARCH opr_char="=" encoding="">url</SEARCH>
<SEARCH opr_char="=" encoding="">pathname</SEARCH>
<SEARCH opr_char="=" encoding="">src</SEARCH>
<SEARCH opr_char="=" encoding="">lowsrc</SEARCH>
</PARSER_EXCEPTION>