Module ngx_http_xslt_module

ngx_http_xslt_module(0.7.8)是一种过滤器,可使用一个或多个 XSLT 样式表转换 XML 响应。

默认情况下未构建此模块,应使用--with-http_xslt_module配置参数启用它。

Note

此模块需要libxml2libxslt库。

Example Configuration

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

Directives

Syntax:xml_entities path;
Default:
Context:http , server , location

指定声明字符实体的 DTD 文件。该文件在配置阶段进行编译。出于技术原因,该模块无法使用已处理 XML 中声明的外部子集,因此将其忽略,而使用专门定义的文件。该文件不应描述 XML 结构。仅声明所需的字符实体就足够了,例如:

<!ENTITY nbsp "&#xa0;">

Syntax:xslt_last_modified on | off;
Default:xslt_last_modified off;
Context:http , server , location

该指令出现在版本 1.5.1 中。

允许在 XSLT 转换期间保留原始响应中的“最后修改的”Headers 字段,以方便响应缓存。

默认情况下,在转换期间修改响应的内容时,将删除 Headers 字段,并且该 Headers 字段可能包含动态生成的元素或部分,这些元素或部分独立于原始响应而进行了更改。

Syntax:xslt_param parameter value;
Default:
Context:http , server , location

该指令出现在 1.1.18 版中。

定义 XSLT 样式表的参数。 value被视为 XPath 表达式。 value可以包含变量。要将字符串值传递给样式表,可以使用xslt_string_param指令。

可能有多个xslt_param指令。当且仅当当前级别上没有定义xslt_paramxslt_string_param指令时,这些指令才从上一级继承。

Syntax:xslt_string_param parameter value;
Default:
Context:http , server , location

该指令出现在 1.1.18 版中。

定义 XSLT 样式表的字符串参数。 value中的 XPath 表达式不会被解释。 value可以包含变量。

可能有多个xslt_string_param指令。当且仅当当前级别上没有定义xslt_paramxslt_string_param指令时,这些指令才从上一级继承。

Syntax:xslt_stylesheet stylesheet [parameter=value ...];
Default:
Context:location

定义 XSLT 样式表及其可选参数。在配置阶段将编译样式表。

可以单独指定参数,也可以使用“ :”定界符将其分组在一行中。如果参数包含“ :”字符,则应将其转义为“ %3A”。此外,libxslt要求将包含非字母数字字符的参数括在单引号或双引号中,例如:

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

参数说明可以包含变量,例如,整个参数行可以取自单个变量:

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

可以指定多个样式表。它们将按指定顺序顺序应用。

Syntax:xslt_types mime-type ...;
Default:xslt_types text/xml;
Context:http , server , location

除了“ text/xml”之外,还启用具有指定 MIME 类型的响应中的转换。特殊值“ *”匹配任何 MIME 类型(0.8.29)。如果转换结果是 HTML 响应,则其 MIME 类型更改为“ text/html”。