Transformar XML usando um XSLT
APLICA-SE A: todas as camadas do Gerenciamento de API
A política xsl-transform
aplica uma transformação XSL para XML no corpo da solicitação ou da resposta.
Observação
Defina os elementos da política e os elementos filho na ordem fornecida na declaração da política. Saiba mais sobre como definir e editar as políticas de Gerenciamento de API.
Declaração de política
<xsl-transform>
<parameter parameter-name="...">...</parameter>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:.../>
<xsl:.../>
</xsl:stylesheet>
</xsl-transform>
Elementos
Nome | Descrição | Obrigatório |
---|---|---|
parâmetro | Usado para definir as variáveis usadas na transformação | Não |
xsl:stylesheet | Elemento de folha de estilos de raiz. Todos os elementos e atributos definidos dentro dele seguem o padrão especificação XSLT. | Yes |
Uso
- Seções de política: de entrada, de saída
- Escopos de política: global, espaço de trabalho, produto, API, operação
- Gateways: clássico, v2, consumo, auto-hospedado, workspace
Observações de uso
- Essa política só pode ser usada uma vez em uma seção de política.
- No momento, essa política dá suporte a XSLT versão 1.0.
Exemplos
Transformar corpo da solicitação
<inbound>
<base />
<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" />
<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>
</inbound>
Transformar corpo da resposta
<policies>
<inbound>
<base />
</inbound>
<outbound>
<base />
<xsl-transform>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" method="xml" indent="yes" />
<!-- Copy all nodes directly-->
<xsl:template match="node()| @*|*">
<xsl:copy>
<xsl:apply-templates select="@* | node()|*" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
</xsl-transform>
</outbound>
</policies>
Políticas relacionadas
Conteúdo relacionado
Para obter mais informações sobre como trabalhar com políticas, consulte:
- Tutorial: Transformar e proteger sua API
- Referência de Política para uma lista completa das instruções de política e suas configurações
- Expressões de política
- Definir ou editar políticas
- Reutilizar configurações de política
- Repositório de snippets de política
- Criar políticas usando o Microsoft Copilot no Azure