Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do
Apigee Edge.
A política XSLTransform aplica transformações de linguagem de folhas de estilo extensíveis (XSLT) personalizadas a mensagens XML, o que lhe permite transformá-las de XML para outro formato, como HTML ou texto simples. A política é frequentemente usada para integrar aplicações que suportam XML, mas que requerem formatos baseados em XML diferentes para os mesmos dados.
Esta política é uma política extensível e a utilização desta política pode ter implicações de custo ou utilização, consoante a sua licença do Apigee. Para ver informações sobre os tipos de políticas e as implicações de utilização, consulte Tipos de políticas.
Entradas
A política XSL usa as seguintes entradas:
- (Obrigatório) O nome de uma folha de estilos XSLT, que contém um conjunto de regras de transformação armazenadas no proxy de API em
/resources/xsl. - (Obrigatório) O XML a ser transformado (normalmente, uma mensagem de pedido 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
O Apigee baseia-se no processador Saxon XSLTe suporta XSLT 1.0 e 2.0.
Elementos XSL não suportados
A política XSL não suporta os seguintes elementos XSL:
<xsl:include><xsl:import>
Amostras
Os exemplos seguintes mostram um fluxo de transformação XSL:
Política XSL -->
<XSL name="TransformXML"> <ResourceURL>xsl://my_transform.xsl</ResourceURL> <Source>request</Source> </XSL>
Política de XSL simples. Aceda ao exemplo seguinte para ver a folha de estilos XSLT referenciada na política (my_transform.xsl). O elemento <Source> é importante.
Por exemplo, se o XML que quer transformar estiver na resposta, a transformação não
ocorre, a menos que defina <Source> como response (e a política esteja anexada ao
fluxo de resposta). No entanto, neste caso, o XML a ser transformado está no pedido.
Folha de estilos 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 estilos my_transform.xsl referenciada na política. Aceda ao exemplo seguinte para ver um exemplo de uma mensagem XML recebida.
Message -->
<?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>
Mensagem de exemplo no pedido (indicada no elemento <Source>request</Source> da política no primeiro exemplo).
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 depois de a folha de estilos XSLT destes exemplos ser aplicada à mensagem XML.
<XSL> elemento
Define uma política XSLTransform.
| Valor predefinido | N/A |
| Obrigatório? | Obrigatória |
| Tipo | Objeto complexo |
| Elemento principal | N/A |
| Elementos subordinados |
<OutputVariable><Parameters><ResourceURL><Source> |
O elemento <XSL> tem os seguintes atributos:
| Atributo | Descrição | Obrigatório? | Tipo |
|---|---|---|---|
name |
Nome da política. Os carateres que pode usar no nome estão restritos a:
A-Z0-9._\-$ %. No entanto, a IU do Apigee aplica restrições adicionais,
como a remoção automática de carateres que não sejam alfanuméricos. |
Obrigatória | String |
Referência de elemento secundário
Esta secção descreve os elementos subordinados de <XSL>.
<OutputVariable>
Uma variável que armazena o resultado da transformação. Deve definir este elemento como uma variável personalizada e, em seguida, consumir essa variável.
| Valor predefinido | N/A |
| Obrigatório? | Opcional |
| Tipo | String |
| Elemento principal |
<XSL>
|
| Elementos subordinados | Nenhum |
O valor de <OutputVariable> não pode ser do tipo message, ou seja, não pode ser
message, request nem response.
Para substituir o conteúdo da mensagem pelo resultado da transformação, elimine este elemento. Por exemplo, se estiver a transformar uma mensagem em HTML, não inclua o elemento.
<Parameters>
Adiciona suporte para o elemento <xsl:param> nos seus ficheiros de estilos. Define
cada parâmetro como um elemento secundário <Parameter> deste elemento.
| Valor predefinido | N/A |
| Obrigatório? | Opcional |
| Tipo | Matriz de <Parameter> elementos |
| Elemento principal |
<XSL>
|
| Elementos subordinados |
<Parameter> |
O elemento <Parameters> tem os seguintes atributos:
| Atributo | Descrição | Obrigatório? | Tipo |
|---|---|---|---|
ignoreUnresolvedVariables |
Determina se a política ignora erros de variáveis não resolvidos nas instruções do script XSLT. O valor predefinido é false, o que significa que, por predefinição,
a política vai gerar erros se encontrar variáveis não resolvidas. |
Opcional | Booleano |
<Parameter>
Define um parâmetro no elemento <Parameters>.
| Valor predefinido | N/A |
| Obrigatório? | Opcional |
| Tipo | Objeto complexo |
| Elemento principal |
<Parameters>
|
| Elementos subordinados | Nenhum |
O elemento <Parameter> tem os seguintes atributos:
| Atributo | Obrigatório? | Tipo | Descrição |
|---|---|---|---|
name |
Obrigatória | String |
O nome do parâmetro. O Apigee faz corresponder o valor que definir aqui ao valor do atributo Por exemplo, se introduzir um nome de
<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 usar este atributo, não use o atributo |
value |
Opcional | String |
Especifica um valor codificado para o parâmetro. Por exemplo, se um parâmetro denominado
<Parameter name="answer" value="42"/> Se usar este atributo, não use o atributo |
O parâmetro obtém o respetivo valor do atributo ref ou com um elemento value explícito.
Para ver um exemplo e mais informações, consulte o artigo Como devem ser usados os parâmetros opcionais na política de transformação XSL?.
<ResourceURL>
O ficheiro XSL que o Apigee usa para transformar a mensagem. O valor deste elemento é o nome da folha de estilos XSL armazenada no proxy de API em /resources/xsl.
| Valor predefinido | N/A |
| Obrigatório? | Obrigatória |
| Tipo | String |
| Elemento principal |
<XSL>
|
| Elementos subordinados | Nenhum |
Por exemplo:
<ResourceURL>xsl://SubscriberNumbers-Request.xsl</ResourceURL>
Para mais informações, consulte os ficheiros de recursos.
<Source>
Especifica a mensagem que é transformada. Normalmente, este valor é definido como request ou response, consoante a mensagem a transformar seja de entrada ou de saída.
| Valor predefinido | N/A |
| Obrigatório? | Opcional |
| Tipo | String |
| Elemento principal |
<XSL>
|
| Elementos subordinados | Nenhum |
O ficheiro XSL que define a transformação é definido pelo elemento <ResourceURL>.
- Se a origem estiver em falta, é tratada como uma mensagem simples. Por exemplo,
<Source>message</Source> - Se não for possível resolver a variável de origem ou esta for resolvida como um tipo que não seja de mensagem, o passo de transformação falha.
Referência de erro
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
XSLTransform 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).
|
build |
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. | build |
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 XSLTransform policy is empty, then the
deployment of the API proxy fails. |
build |
XSLInvalidResourceType |
If the resource type specified in the <ResourceURL> element of the XSLTransform
policy is not of type xsl, then the deployment of the API proxy fails. |
build |