模块 ngx_http_xslt_module

示例配置
指令
     xml_entities
     xslt_last_modified
     xslt_param
     xslt_string_param
     xslt_stylesheet
     xslt_types

ngx_http_xslt_module (0.7.8+) 模块是一个过滤器,它使用一个或多个 XSLT 样式表来转换 XML 响应。

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

此模块需要 libxml2libxslt 库。

示例配置

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

指令

语法 xml_entities 路径;
默认值
上下文 httpserverlocation

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

<!ENTITY nbsp "&#xa0;">

语法 xslt_last_modified on | off;
默认值
xslt_last_modified off;
上下文 httpserverlocation

此指令出现在 1.5.1 版本中。

允许在 XSLT 转换期间保留原始响应中的“Last-Modified”标头字段,以方便响应缓存。

默认情况下,标头字段会被移除,因为响应的内容在转换期间会被修改,并且可能包含独立于原始响应而更改的动态生成元素或部分。

语法 xslt_param 参数 ;
默认值
上下文 httpserverlocation

此指令出现在 1.1.18 版本中。

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

可以有多个 xslt_param 指令。如果当前级别上没有定义 xslt_paramxslt_string_param 指令,则这些指令将从先前的配置级别继承。

语法 xslt_string_param 参数 ;
默认值
上下文 httpserverlocation

此指令出现在 1.1.18 版本中。

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

可以有多个 xslt_string_param 指令。如果当前级别上没有定义 xslt_paramxslt_string_param 指令,则这些指令将从先前的配置级别继承。

语法 xslt_stylesheet 样式表 [参数= ...];
默认值
上下文 位置

定义 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;
}

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

语法 xslt_types MIME 类型 ...;
默认值
xslt_types text/xml;
上下文 httpserverlocation

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