'xsl-transform' Azure API Policy Statement

Q

How to use "xsl-transform" Azure API Policy Statement?

✍: FYIcenter.com

A

The "xsl-transform" Policy Statement allows you to apply an XSL transformation to XML in the body of the inbound request or outbound response.

The "xsl-transform" Policy Statement uses the following syntax:

<xsl-transform>  
    <parameter name="xxx">abcd</parameter>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
        <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />  
        <xsl:param name="xxx" />  
        <xsl:template match="...">
		    ...
        </xsl:template>  
		...
    </xsl:stylesheet>  
</xsl-transform>

The "parameter" element allows you to define variables to be used in the XSL transformation.

The "xsl:stylesheet" element starts the XSL transformation definitions.

For example, the following "xsl-transform" Policy Statement insert an attribute of User-Agent="..." into the root element:

<xsl-transform>  
    <parameter name="User-Agent">@(context.Request.Headers.GetValueOrDefault("User-Agent","non-specified"))</parameter>  
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">  
        <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" />  
        <xsl:param name="User-Agent" />  
        <xsl:template match="* | @* | node()">  
            <xsl:copy>  
                <xsl:if test="self::* and not(parent::*)">  
                    <xsl:attribute name="User-Agent">  
                        <xsl:value-of select="$User-Agent" />  
                    </xsl:attribute>  
                </xsl:if>  
                <xsl:apply-templates select="* | @* | node()" />  
            </xsl:copy>  
        </xsl:template>  
    </xsl:stylesheet>  
</xsl-transform>

 

Policy to Modify Request and Response Body

⇒⇒Microsoft Azure API Management Tutorials

2017-09-23, 115👍, 0💬