Política de XSLTransform

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

O que

A política de transformação XSL aplica transformações da linguagem de folha de estilo extensível (XSLT, na sigla em inglês) a mensagens XML, permitindo transformá-las do XML para outro formato, como XML, HTML ou texto simples. Geralmente, a política é usada para integrar aplicativos compatíveis com XML, mas que exigem formatos XML diferentes para os mesmos dados.

Amostras

Os exemplos a seguir mostram todos os recursos em um fluxo de transformação XSL.

Política de XSL ->

<XSL name="TransformXML">
  <ResourceURL>xsl://my_transform.xsl</ResourceURL>
  <Source>request</Source>
</XSL>

Política simples de XSL. Vá para o próximo exemplo para ver a folha de estilo GQL referenciada na política (my_transform.xsl). O elemento <Source> é importante. Por exemplo, se o XML que você quer transformar estiver na resposta, a transformação não ocorrerá, a menos que você defina a Origem como response (e a política estará anexada ao fluxo de resposta). Mas, nesse caso, o XML a ser transformado está na solicitação.

Folha de estilo GQL ->

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output method="text"/>
  <xsl:variable name="newline">
  <xsl:text>
  </xsl:text>
  </xsl:variable>
  <xsl:template match="/">
  <xsl:text>&lt;Life&gt;</xsl:text>
    <xsl:value-of select="$newline"/>
    <xsl:text>Here are the odd-numbered items from the list:</xsl:text>
    <xsl:value-of select="$newline"/>
    <xsl:for-each select="list/listitem">
      <xsl:if test="(position() mod 2) = 1">
        <xsl:number format="1. "/>
        <xsl:value-of select="."/>
        <xsl:value-of select="$newline"/>
      </xsl:if>
    </xsl:for-each>
  <xsl:text>&lt;/Life&gt;</xsl:text>
</xsl:template>
</xsl:stylesheet>

A folha de estilo my_transform.xsl referenciada na política. Acesse a próxima amostra para ver um exemplo de uma mensagem XML recebida.

Mensagem ->

<?xml version="1.0"?>
<list>
  <title>A few of my favorite albums</title>
  <listitem>A Love Supreme</listitem>
  <listitem>Beat Crazy</listitem>
  <listitem>Here Come the Warm Jets</listitem>
  <listitem>Kind of Blue</listitem>
  <listitem>London Calling</listitem>
  <listitem>Remain in Light</listitem>
  <listitem>The Joshua Tree</listitem>
  <listitem>The Indestructible Beat of Soweto</listitem>
</list>

Exemplo de mensagem na solicitação (indicada no elemento <Source>request</Source> da política na primeira amostra).

Mensagem transformada

<Life>
Here are the odd-numbered items from the list:
1. A Love Supreme
3. Here Come the Warm Jets
5. London Calling
7. The Joshua Tree
</Life>

A mensagem transformada após a folha de estilo XSLT dessas amostras é aplicada à mensagem XML.


Referência de elemento

Configure uma política de transformação XSL usando os elementos a seguir.

Nome do campo Descrição
Nome (Obrigatório) Nome da política. Os caracteres que podem ser usados no nome são restritos a: A-Z0-9._\-$ %. No entanto, a interface de gerenciamento aplica outras restrições, como a remoção automática de caracteres que não são alfanuméricos.
Fonte (opcional) Contém a mensagem a partir da qual as informações precisam ser extraídas. Normalmente, esse valor é definido como request ou response, dependendo se a mensagem a ser transformada é de entrada ou de saída.
  • Se não houver uma origem, ela será tratada como uma mensagem simples. Por exemplo, <Source>message</Source>
  • Se a variável de origem não puder ser resolvida ou resolvida para um tipo não mensagem, a etapa de transformação falhará.
OutputVariable (opcional)

Uma variável que armazena a saída da transformação. A OutputVariable não pode ser do tipo Message, ou seja, não pode ser "message", "request" ou "response". Defina esse elemento como uma variável personalizada e consuma essa variável.

Para substituir o conteúdo da mensagem pelo resultado da transformação, exclua esse elemento. Por exemplo, se você estiver transformando uma mensagem para HTML, não inclua esse elemento.

ResourceURL (obrigatório) O arquivo XSLT a ser usado para transformar a mensagem.
Parâmetros (opcional) ignoreUnresolvedVariables (opcional)
Ignora todos os erros de variável não resolvidos nas instruções de script XSLT.
Valores válidos: true/false
Valor padrão: false
Parâmetro (opcional) nome (obrigatório)

Os parâmetros aceitam o uso do parâmetro XSL em suas folhas de estilo, em que o nome que você adiciona aqui na política é o nome do parâmetro XSL. Por exemplo, se você inserir um nome "uid", seu XSL poderá ser semelhante a este: <xsl:param name="uid" select="''"/>).

O parâmetro extrai o valor dele de uma referência para uma variável de contexto (identificada pelo atributo ref) ou com um value explícito.

Para um exemplo e mais informações, consulte http://community.apigee.com/questions/1860/how-should-the-the-optional-parameters-on-the-xsl.html#answer-1864.

ref (opcional)

Especifica a referência que origina o valor de uma variável. Por exemplo, se um parâmetro "uid" precisar obter o valor de uma variável chamada "authn.uid", o elemento "Parameter" será assim: <Parameter name="uid" ref="authn.uid"/>

Se você usar esse atributo, não use o atributo "value".

Valor (opcional)

É possível usar esse atributo para codificar o valor do parâmetro.

Se você usar esse atributo, não use o atributo ref.


Observações sobre uso

O XSLT é implementado em um arquivo .xsl autônomo, que é armazenado no proxy de API em /resources/xsl. A política XSL apenas referencia o arquivo XSL. Consulte Arquivos de recurso para mais informações.

A política XSL requer duas entradas:

  • O nome de uma folha de estilo XSLT, que contém um conjunto de regras de transformação, armazenadas no proxy de API em /resources/xsl
  • A origem do XML a ser transformado (normalmente uma mensagem de solicitação ou resposta)

<xsl:include> e <xsl:import> não são compatíveis.

O Apigee Edge depende do padrão saxon WebGL processador original e oferece suporte a vCPU 1.0 e 2.0.


Referência de erros

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.xsl.XSLSourceMessageNotAvailable 500 This error occurs if the message or string variable specified in the <Source> element of the XSL Transform policy is either out of scope (not available in the specific flow where the policy is being executed) or can't be resolved (is not defined).
steps.xsl.XSLEvaluationFailed 500 This error occurs if the input XML payload is unavailable/malformed or the XSLTransform policy fails/is unable to transform the input XML file based on the transformation rules provided in the XSL file. There could be many different causes for the XSLTransform policy to fail. The reason for failure in the error message will provide more information on the cause.

Deployment errors

These errors can occur when you deploy a proxy containing this policy.

Error name Cause Fix
XSLEmptyResourceUrl If the <ResourceURL> element in the XSL Transform policy is empty, then the deployment of the API proxy fails.
XSLInvalidResourceType If the resource type specified in the <ResourceURL> element of the XSL Transform policy is not of type xsl, then the deployment of the API proxy fails.

Temas relacionados