<!-- review: finished -->

<a id="http-xslt"></a>

# XSLT

O módulo é um filtro que transforma respostas XML usando uma ou mais folhas de estilo XSLT.

Ao [compilar a partir do código-fonte](https://pt.angie.software//angie/docs/installation/sourcebuild.md#sourcebuild),
este módulo não é compilado por padrão;
ele deve ser habilitado com a
`‑‑with‑http_xslt_module`
[opção de compilação](https://pt.angie.software//angie/docs/installation/sourcebuild.md#configure).

Em nossos repositórios, o módulo é compilado
[dinamicamente](https://pt.angie.software//angie/docs/installation/index.md#install-dynamicmodules)
e está disponível como um pacote separado chamado `angie-module-xslt` ou `angie-pro-module-xslt`.

#### NOTE
Este módulo requer as bibliotecas [libxml2](http://xmlsoft.org/) e [libxslt](http://xmlsoft.org/XSLT/).

<a id="configuration-example-51"></a>

## Exemplo de Configuração

```nginx
location / {
    xml_entities    /site/dtd/entities.dtd;
    xslt_stylesheet /site/xslt/one.xslt param=value;
    xslt_stylesheet /site/xslt/two.xslt;
}
```

<a id="directives-54"></a>

## Diretivas

<a id="index-0"></a>

<a id="xml-entities"></a>

### xml_entities

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xml_entities` caminho;   |
|-------------------------------------------------------------------------------------------|---------------------------|
| Padrão                                                                                    | —                         |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location    |

Especifica o arquivo DTD que declara entidades de caracteres. Este arquivo é compilado no estágio de configuração. Por razões técnicas, o módulo não consegue usar o subconjunto externo declarado no XML processado, então ele é ignorado e um arquivo especialmente definido é usado em seu lugar. Este arquivo não deve descrever a estrutura XML. É suficiente declarar apenas as entidades de caracteres necessárias, por exemplo:

```xml
<!ENTITY nbsp "&#xa0;">
```

<a id="index-1"></a>

<a id="xslt-last-modified"></a>

### xslt_last_modified

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_last_modified` `on` | `off`;   |
|-------------------------------------------------------------------------------------------|--------------------------------------|
| Padrão                                                                                    | `xslt_last_modified off;`            |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location               |

Permite preservar o campo de cabeçalho `Last-Modified` da resposta original durante transformações XSLT para facilitar o cache de resposta.

Por padrão, o campo de cabeçalho é removido pois o conteúdo da resposta é modificado durante as transformações e pode conter elementos gerados dinamicamente ou partes que são alteradas independentemente da resposta original.

<a id="index-2"></a>

<a id="xslt-param"></a>

### xslt_param

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_param` parâmetro valor;   |
|-------------------------------------------------------------------------------------------|---------------------------------|
| Padrão                                                                                    | —                               |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location          |

Define os parâmetros para folhas de estilo XSLT. O valor é tratado como uma expressão XPath. O valor pode conter variáveis. Para passar um valor de string para uma folha de estilo, a diretiva [xslt_string_param](#xslt-string-param) pode ser usada.

Pode haver várias diretivas `xslt_param`. Essas diretivas são herdadas do nível de configuração anterior se e somente se não há diretivas `xslt_param` e [xslt_string_param](#xslt-string-param) definidas no nível atual.

<a id="index-3"></a>

<a id="xslt-string-param"></a>

### xslt_string_param

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_string_param` parâmetro valor;   |
|-------------------------------------------------------------------------------------------|----------------------------------------|
| Padrão                                                                                    | —                                      |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location                 |

Define os parâmetros de string para folhas de estilo XSLT. Expressões XPath no valor não são interpretadas. O valor pode conter variáveis.

Pode haver várias diretivas `xslt_string_param`. Essas diretivas são herdadas do nível de configuração anterior se e somente se não há diretivas [xslt_param](#xslt-param) e `xslt_string_param` definidas no nível atual.

<a id="index-4"></a>

<a id="xslt-stylesheet"></a>

### xslt_stylesheet

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_stylesheet` folha-de-estilo [parâmetro=valor ...];   |
|-------------------------------------------------------------------------------------------|------------------------------------------------------------|
| Padrão                                                                                    | —                                                          |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | location                                                   |

Define a folha de estilo XSLT e seus parâmetros opcionais. Uma folha de estilo é compilada no estágio de configuração.

Os parâmetros podem ser especificados separadamente, ou agrupados em uma única linha usando o delimitador ":". Se um parâmetro incluir o caractere ":", ele deve ser escapado como "%3A". Além disso, libxslt requer que parâmetros que contenham caracteres não alfanuméricos sejam colocados entre aspas simples ou duplas, por exemplo:

```console
param1='http%3A//www.example.com':param2=value2
```

A descrição dos parâmetros pode conter variáveis, por exemplo, toda a linha de parâmetros pode ser obtida de uma única variável:

```nginx
location / {
    xslt_stylesheet /site/xslt/one.xslt
                    $arg_xslt_params
                    param1='$value1':param2=value2
                    param3=value3;
}
```

É possível especificar várias folhas de estilo. Elas serão aplicadas sequencialmente na ordem especificada.

<a id="index-5"></a>

<a id="xslt-types"></a>

### xslt_types

| [Sintaxe](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_types` mime-tipo ...;   |
|-------------------------------------------------------------------------------------------|-------------------------------|
| Padrão                                                                                    | `xslt_types text/xml;`        |
| [Contexto](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)  | http, server, location        |

Habilita transformações em respostas com os tipos MIME especificados além de `text/xml`. O valor especial "\*" corresponde a qualquer tipo MIME. Se o resultado da transformação for uma resposta HTML, seu tipo MIME é alterado para `text/html`.
