<!-- review: finished -->

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

# XSLT

El módulo es un filtro que transforma respuestas XML utilizando una o más hojas de estilo XSLT.

Cuando se [compila desde el código fuente](https://es.angie.software//angie/docs/installation/sourcebuild.md#sourcebuild),
este módulo no se construye por defecto;
debe habilitarse con la
[opción de compilación](https://es.angie.software//angie/docs/installation/sourcebuild.md#configure)
`--with-http_xslt_module`.

En nuestros repositorios, el módulo se construye
[dinámicamente](https://es.angie.software//angie/docs/installation/index.md#install-dynamicmodules)
y está disponible como un paquete separado denominado `angie-module-xslt` o `angie-pro-module-xslt`.

#### NOTE
Este módulo requiere las bibliotecas [libxml2](http://xmlsoft.org/) y [libxslt](http://xmlsoft.org/XSLT/).

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

## Ejemplo de configuración

```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>

## Directivas

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

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

### xml_entities

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xml_entities` path;   |
|--------------------------------------------------------------------------------------------|------------------------|
| Predeterminado                                                                             | —                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location |

Especifica el archivo DTD que declara entidades de caracteres. Este archivo se compila en la etapa de configuración. Por razones técnicas, el módulo no puede usar el subconjunto externo declarado en el XML procesado, por lo que se ignora y se utiliza un archivo especialmente definido en su lugar. Este archivo no debe describir la estructura XML. Es suficiente declarar únicamente las entidades de caracteres necesarias, por ejemplo:

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

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

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

### xslt_last_modified

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_last_modified` `on` | `off`;   |
|--------------------------------------------------------------------------------------------|--------------------------------------|
| Predeterminado                                                                             | `xslt_last_modified off;`            |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location               |

Permite conservar el campo de cabecera `Last-Modified` de la respuesta original durante las transformaciones XSLT para facilitar el almacenamiento en caché de la respuesta.

De forma predeterminada, este campo de cabecera se elimina ya que el contenido de la respuesta se modifica durante las transformaciones y puede contener elementos generados dinámicamente o partes que cambian independientemente de la respuesta original.

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

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

### xslt_param

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_param` parameter value;   |
|--------------------------------------------------------------------------------------------|---------------------------------|
| Predeterminado                                                                             | —                               |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location          |

Define parámetros para las hojas de estilo XSLT. El valor se interpreta como una expresión XPath. El valor puede contener variables. Para pasar un valor de cadena a una hoja de estilo puede usarse la directiva [xslt_string_param](#xslt-string-param).

Pueden definirse varias directivas `xslt_param`. Estas se heredan del nivel de configuración anterior únicamente si en el nivel actual no se han definido directivas `xslt_param` ni [xslt_string_param](#xslt-string-param).

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

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

### xslt_string_param

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_string_param` parameter value;   |
|--------------------------------------------------------------------------------------------|----------------------------------------|
| Predeterminado                                                                             | —                                      |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location                 |

Define parámetros de tipo cadena para las hojas de estilo XSLT. Las expresiones XPath en el valor no se interpretan. El valor puede contener variables.

Pueden definirse varias directivas `xslt_string_param`. Estas se heredan del nivel de configuración anterior únicamente si en el nivel actual no se han definido directivas [xslt_param](#xslt-param) ni `xslt_string_param`.

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

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

### xslt_stylesheet

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_stylesheet` stylesheet [parameter=value ...];   |
|--------------------------------------------------------------------------------------------|-------------------------------------------------------|
| Predeterminado                                                                             | —                                                     |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | location                                              |

Define la hoja de estilo XSLT y sus parámetros opcionales. Una hoja de estilo se compila en la etapa de configuración.

Los parámetros pueden especificarse de forma separada o agrupados en una sola línea usando el delimitador ":". Si un parámetro incluye el carácter ":", debe escaparse como "%3A". Además, libxslt requiere encerrar entre comillas simples o dobles los parámetros que contengan caracteres no alfanuméricos, por ejemplo:

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

La descripción de parámetros puede contener variables, por ejemplo, toda la línea de parámetros puede obtenerse de una sola variable:

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

Es posible especificar varias hojas de estilo. Se aplicarán secuencialmente en el orden indicado.

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

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

### xslt_types

| [Sintaxis](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | `xslt_types` mime-type ...;   |
|--------------------------------------------------------------------------------------------|-------------------------------|
| Predeterminado                                                                             | `xslt_types text/xml;`        |
| [Contexto](https://es.angie.software//angie/docs/configuration/configfile.md#configfile)   | http, server, location        |

Habilita transformaciones en respuestas con los tipos MIME especificados además de `text/xml`. El valor especial "\*" coincide con cualquier tipo MIME. Si el resultado de la transformación es una respuesta HTML, su tipo MIME se cambia a `text/html`.
