XSL Transform policy

What

The XSL Transform policy applies custom Extensible stylesheet language transformations (XSLT) to XML messages, letting you transform them from XML to another format, such as XML, HTML, or plain text. The policy is often used to integrate applications that support XML, but that require different XML-formats for the same data.

This policy will transform XML only if the Content-Type header on the message to be transformed is set to XML. For example, text/xml or application/xml.

Video: Watch a short video to learn more about the XSL Transform policy.

Simple XSL policy. Go to the next example to see the XSLT stylesheet referenced in the policy (my_transform.xsl). The <Source> element is important. For example, if the XML you want to transform is in the response, the transformation won't occur unless you set the Source to response (and the policy is attached to the response flow). But in this case, the XML to be transformed is in the request.

The transformed message after the XSLT stylesheet from these samples is applied to the XML message.

Element reference

Configure an XSL Transformation policy using the following elements.

<xsl:include> and <xsl:import> are not supported.

Field Name

Description

Name (Mandatory)

Name of the policy. Characters you can use in the name are restricted to: A-Z0-9._\-$ %. However, the Management UI enforces additional restrictions, such as automatically removing characters that are not alphanumeric.

Source (Optional)

Contains the message from which information needs to be extracted. Usually this value is set to request or response, depending on whether the message to be transformed is inbound or outbound.

If source is missing, it is treated as a simple message. For example, <Source>message</Source>

If the source variable cannot be resolved, or resolves to a non-message type, the transformation step fails.

OutputVariable (Optional)

A variable that stores the output of the transformation. The OutputVariable cannot be of Message type, that is, it cannot be 'message', 'request', or 'response'. You should set this element to be a custom variable, and then consume that variable.

To replace the message content with the output of the transformation, delete this element. For example, if you're transforming a message to HTML, don't include this element.

ResourceURL (Mandatory)

The XSLT file to be used for transforming the message.

Parameters (Optional)

ignoreUnresolvedVariables (Optional)

Ignores any unresolved variable errors in the XSLT script instructions.

Valid values: true/false

Default value: false

Parameter (Optional)

name (Mandatory)

Parameters support the use of XSL param in your stylesheets, where the name you add here in the policy is the name of the XSL param. For example, if you enter a name of "uid", your XSL might look something like this: <xsl:param name="uid" select="''"/>).

The param gets its value either from a reference to a context variable (identified by the ref attribute) or with an explicit value.

Specifies the reference that sources the value from a variable. For example, if a "uid" parameter needs to get its value from a variable called "authn.uid", the Parameter element would look like this: <Parameter name="uid" ref="authn.uid"/>