Esta página aplica-se ao Apigee e ao Apigee Hybrid.
Veja a documentação do Apigee Edge.
O quê
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 de 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.
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>
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 estilo 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 este 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 a partir do atributo ref ou com um 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
Erros de tempo de execução
Estes erros podem ocorrer quando a política é executada.
| Código de falha | Estado de HTTP | Causa | Corrigir |
|---|---|---|---|
steps.xsl.XSLSourceMessageNotAvailable | 500 | Este erro ocorre se a variável de mensagem ou string especificada no elemento <Source> da política XSLTransform estiver fora do âmbito (não disponível no fluxo específico onde a política está a ser executada) ou não puder ser resolvida (não estiver definida). | build |
steps.xsl.XSLEvaluationFailed | 500 | Este erro ocorre se a carga útil XML de entrada estiver indisponível/com formato incorreto ou se a política XSLTransform falhar/não conseguir transformar o ficheiro XML de entrada com base nas regras de transformação fornecidas no ficheiro XSL. Podem existir várias causas diferentes para a falha da política XSLTransform. O motivo da falha na mensagem de erro fornece mais informações sobre a causa. | build |
Erros de implementação
Estes erros podem ocorrer quando implementa um proxy que contém esta política.
| Nome do erro | Causa | Corrigir |
|---|---|---|
XSLEmptyResourceUrl | Se o elemento <ResourceURL> na política XSLTransform estiver vazio, a implementação do proxy de API falha. | build |
XSLInvalidResourceType | Se o tipo de recurso especificado no elemento <ResourceURL> da política não for do tipo xsl, a implementação do proxy de API falha.XSLTransform | build |