Recursive Tag Processing in {{XmlExchange}}

BIS recursively processes tags in the service program's response output, as if the response output was a stencil. Tag substitution occurs as the service output is written to the response page (replacing the {{XmlExchange}} tag), and substitution is performed in the context of the page that contains the {{XmlExchange}} tag.

This behavior allows the service program to dynamically generate tags, thereby using BIS tag substitution features in the HTML, XHTML or XML produced by the service program. For example, if the generated HTML contains URLs in links, the {{Value}} tag can be used to process those URLs in the context of the requested page, and make the URLs absolute, based on the URL of the original request. Another example: the service program can also change the content type or character set of the response by generating a {{ContentType}} tag.

The {{FormActionTarget}} tag discussed in the next section is a tag that is specifically intended to be included in generated {{XmlExchange}} output. Also note that any tag may be embedded in the output - even another {{XmlExchange}}.