XSLT#

该模块是一个过滤器,用于使用一个或多个XSLT样式表转换XML响应。

从源代码构建 时,该模块默认不构建;需要使用 构建选项 中的 ‑‑with‑http_xslt_module 来启用。

在我们的代码库中,该模块是 动态构建的,并作为一个名为 angie-module-xsltangie-pro-module-xslt 的独立包提供。

重要

该模块需要 libxml2libxslt 库。

配置示例#

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

指令#

xml_entities#

语法

xml_entities path;

默认

上下文

http, server, location

指定声明字符实体的DTD文件。该文件在配置阶段被编译。由于技术原因,模块无法使用在处理的XML中声明的外部子集,因此会被忽略,而使用一个特别定义的文件。该文件不应描述XML结构,只需声明所需的字符实体即可,例如:

<!ENTITY nbsp "&#xa0;">

xslt_last_modified#

语法

xslt_last_modified on | off;

默认

xslt_last_modified off;

上下文

http, server, location

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

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

xslt_param#

语法

xslt_param parameter value;

默认

上下文

http, server, location

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

可以有多个 xslt_param 指令。只有在当前级别没有定义 xslt_paramxslt_string_param 指令时,这些指令才会从上一级配置继承。

xslt_string_param#

语法

xslt_string_param parameter value;

默认

上下文

http, server, location

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

可以有多个 xslt_string_param 指令。只有在当前级别没有定义 xslt_paramxslt_string_param 指令时,这些指令才会从上一级配置继承。

xslt_stylesheet#

语法

xslt_stylesheet stylesheet [parameter=value ...];

默认

上下文

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

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

xslt_types#

语法

xslt_types mime-type ...;

默认

xslt_types text/xml;

上下文

http, server, location

在响应中除 "text/xml" 之外,启用指定MIME类型的转换。特殊值 "*" 匹配任何MIME类型。如果转换结果是HTML响应,其MIME类型将更改为 "text/html"。