Esta página se aplica à Apigee e à Apigee híbrida.
Confira a documentação da Apigee Edge.
O que
A política XSLTransform 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.
Esta é uma política extensível. O uso dela pode ter implicações no custo ou na utilização, dependendo da sua licença da Apigee. Para informações sobre tipos de política e implicações de uso, consulte Tipos de política.
Entradas
A política XSL usa as seguintes entradas:
- (Obrigatório) 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
. - (Obrigatório) XML a ser transformado (normalmente uma mensagem de solicitação ou resposta).
- (Opcional) O nome de uma variável que armazena a saída.
- (Opcional) Parâmetros que correspondem aos parâmetros na folha de estilo XSL.
Processador de análise
A Apigee depende do processador Saxon XSLT (em inglês) e é compatível com XSLT 1.0 e 2.0.
Elementos XSL não compatíveis
A política XSL não é compatível com os seguintes elementos XSL:
<xsl:include>
<xsl:import>
Amostras
Os exemplos a seguir mostram 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 XSLT 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 <Source>
como response
(e a política esteja anexada ao
fluxo de resposta). Mas, nesse caso, o XML a ser transformado está na solicitação.
Folha de estilo XSLT ->
<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><Life></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></Life></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.
Elemento <XSL>
Define uma política XSLTransform
.
Valor padrão | n/a |
Obrigatório? | Obrigatório |
Tipo | Objeto complexo |
Elemento pai | n/a |
Elemento filho |
<OutputVariable> <Parameters> <ResourceURL> <Source> |
O elemento <XSL>
tem os seguintes atributos:
Atributo | Descrição | Obrigatório? | Tipo |
---|---|---|---|
name |
Nome da política. Os caracteres que podem ser usados no nome são restritos a:
A-Z0-9._\-$ % . No entanto, a IU da Apigee impõe outras
restrições, como a remoção automática de caracteres que não são alfanuméricos. |
Obrigatório | String |
Referência a elementos filhos
Esta seção descreve os elementos filhos de <XSL>
.
<OutputVariable>
Uma variável que armazena a saída da transformação. Defina esse elemento como uma variável personalizada e consuma essa variável.
Valor padrão | n/a |
Obrigatório? | Opcional |
Tipo | String |
Elemento pai |
<XSL>
|
Elemento filho | Nenhum |
O valor de <OutputVariable>
não pode ser um tipo de message. Ou seja, não pode ser
message
, request
ou response
.
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.
<Parameters>
Adiciona compatibilidade com o elemento <xsl:param>
nas suas folhas de estilo. Você define
cada parâmetro como um elemento filho <Parameter>
desse elemento.
Valor padrão | n/a |
Obrigatório? | Opcional |
Tipo | Matriz de elementos <Parameter> |
Elemento pai |
<XSL>
|
Elemento filho |
<Parameter> |
O elemento <Parameters>
tem os seguintes atributos:
Atributo | Descrição | Obrigatório? | Tipo |
---|---|---|---|
ignoreUnresolvedVariables |
Determina se a política ignora erros de variável não resolvidos nas instruções de script
XSLT. O valor padrão é false , o que significa que, por padrão,
a política emitirá erros se encontrar variáveis não resolvidas. |
Opcional | Booleano |
<Parameter>
Define um parâmetro no elemento <Parameters>
.
Valor padrão | n/a |
Obrigatório? | Opcional |
Tipo | Objeto complexo |
Elemento pai |
<Parameters>
|
Elemento filho | Nenhum |
O elemento <Parameter>
tem os seguintes atributos:
Atributo | Obrigatório? | Tipo | Descrição |
---|---|---|---|
name |
Obrigatório | String |
O nome do parâmetro. A Apigee corresponde ao valor definido aqui com o valor do
atributo Por exemplo, se você inserir um nome
<xsl:param name="uid" select="''"/> |
ref |
Opcional | String |
Aponta para uma variável de contexto que contém o valor do parâmetro. Os valores das
variáveis de contexto Por exemplo, se um
parâmetro <Parameter name="uid" ref="authn.uid"/> Se você usar esse atributo, não use o atributo |
value |
Opcional | String |
Especifica um valor codificado para o parâmetro. Por exemplo, se um parâmetro chamado
<Parameter name="answer" value="42"/> Se você usar esse atributo, não use o atributo |
O parâmetro recebe o valor do atributo ref
ou com um value
explícito.
Para ver um exemplo e mais informações, consulte Como os parâmetros opcionais na política de transformação XSL devem ser usados?
<ResourceURL>
O arquivo XSL que a Apigee usa para transformar a mensagem. O valor desse elemento é o
nome da folha de estilo XSL armazenada no proxy de API em /resources/xsl
.
Valor padrão | n/a |
Obrigatório? | Obrigatório |
Tipo | String |
Elemento pai |
<XSL>
|
Elemento filho | Nenhum |
Exemplo:
<ResourceURL>xsl://SubscriberNumbers-Request.xsl</ResourceURL>
Para mais informações, consulte Arquivos de recursos.
<Source>
Especifica a mensagem que é transformada. Normalmente, esse valor é
definido como request
ou response
, dependendo se a mensagem a ser
transformada é de entrada ou de saída.
Valor padrão | n/a |
Obrigatório? | Opcional |
Tipo | String |
Elemento pai |
<XSL>
|
Elemento filho | Nenhum |
O arquivo XSL que define a transformação é definido pelo <ResourceURL>
.
- Se não houver uma origem, ela será tratada como uma mensagem simples. 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á.
Referência de erros
Erros de execução
Esses erros podem ocorrer quando a política é executada.
Código de falha | Status HTTP | Causa | Correção |
---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable |
500 |
Esse erro ocorrerá se a variável da mensagem ou da string especificada no elemento <Source> da política XSLTransform estiver fora do escopo (não disponível no fluxo específico em que a política estiver sendo executada) ou não pode ser resolvido (não foi definido).
|
build |
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. | build |
Erros na implantação
Esses erros podem ocorrer quando você implanta um proxy que contém essa política.
Nome do erro | Causa | Correção |
---|---|---|
XSLEmptyResourceUrl |
Se o elemento <ResourceURL> na política XSLTransform estiver vazio, a implantação do proxy da API falhará. |
build |
XSLInvalidResourceType |
Se o tipo de recurso especificado no elemento <ResourceURL> da política XSLTransform não for do tipo xsl , a implantação do proxy de API falhará. |
build |