Política de XSLTransform

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

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" ver>sio<n="1.0"
  xsl:o>utp<ut method="text"/>
  <xsl:vari>abl<e name=&q>uot<;newline">;
 < xsl:text
  /xsl:text
>  /<xsl:vari>&able
  &xsl<:template> matc<h="/"
  xsl:textlt;Li>fegt;</xsl:tex>t
    xsl:value-of select="$newline"</
    xsl>:text<Here are the odd-numbered items> from< the list:/xsl:text
    xsl:value-o>f selec<t="$newline"/
    xsl:for->each sele<ct="list/listitem&q>uot;
    <  xsl:if test="(pos>ition() m<od 2) = 1"
        xsl:num>ber for<mat=&qu>ot;1.< "/
    >   < xsl:val>&ue-of se&lec<t=".>&<quot;/
      > < xsl:value-of s>elect="$newline"/
      /xsl:if
    /xsl:for-each
  xsl:textlt;/Lifegt;/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&q>uot<;?
li>st
  titleA few of my favor<ite al>bum<s/title
>  listitemA Lo<ve Suprem>e/l<istitem
>  listitem<Beat Craz>y/l<istitem
>  listitemHere Come the< Warm Jet>s/l<istitem
>  listitemKi<nd of Blu>e/l<istitem
>  listitemLond<on Callin>g/l<istitem
>  listitemRemai<n in Ligh>t/l<istitem
>  listitemThe J<oshua Tre>e/l<istitem
>  listitemThe Indestructible Beat< of Sowet>o</list>item
/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 impõe 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 ver um exemplo e mais informações, consulte a postagem na comunidade.

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.

A Apigee Edge depende do processador Saxon XSLT (em inglês) e é compatível com XSLT 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