Política de XSLTransform

Você está vendo a documentação do Apigee Edge.
Acesse a 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.

Exemplos

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 IU de gerenciamento aplica outras restrições, como a remoção automática de caracteres nã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 do script DEX.
Valores válidos: verdadeiro/falso
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 usa o processador DEX Saxon e é compatível com DEX 1.0 e 2.0.


Referência de erros

Erros de execução

Esses erros podem ocorrer quando a política é executada.

Código de falha Status HTTP Causa Corrigir
steps.xsl.XSLSourceMessageNotAvailable 500 Esse erro vai ocorrer se a mensagem ou a variável de string especificada no elemento <Source> da política de transformação XSL estiver fora do escopo (indisponível no fluxo específico em que a política está sendo executada) ou não puder ser resolvida (não está definida).
steps.xsl.XSLEvaluationFailed 500 Esse erro ocorrerá se o payload XML de entrada estiver indisponível/malformado ou se a política XSLTransform falhar/não puder transformar o arquivo XML de entrada com base nas regras de transformação fornecidas no arquivo XSL. Pode haver muitas causas diferentes para a falha da política XSLTransform. O motivo da falha na mensagem de erro fornecerá mais informações sobre a causa.

Erros na implantação

Esses erros podem ocorrer quando você implanta um proxy que contém essa política.

Nome do erro Causa Corrigir
XSLEmptyResourceUrl Se o elemento <ResourceURL> na política de transformação XSL estiver vazio, a implantação do proxy da API falhará.
XSLInvalidResourceType Se o tipo de recurso especificado no elemento <ResourceURL> da política de transformação XSL não for do tipo xsl, a implantação do proxy de API falhará.

Temas relacionados