XSLT#
该模块是一个过滤器,使用一个或多个 XSLT 样式表转换 XML 响应。
当 从源代码构建 时,默认不构建此模块;应使用 ‑‑with‑http_xslt_module
构建选项 启用它。
在我们的代码库中,该模块是 动态构建 的,并作为一个名为 angie-module-xslt
或 angie-pro-module-xslt
的独立包提供。
配置示例#
location / {
xml_entities /site/dtd/entities.dtd;
xslt_stylesheet /site/xslt/one.xslt param=value;
xslt_stylesheet /site/xslt/two.xslt;
}
指令#
xml_entities#
指定声明字符实体的 DTD 文件。该文件在配置阶段编译。出于技术原因,该模块无法使用在处理的 XML 中声明的外部子集,因此被忽略,并使用专门定义的文件。该文件不应描述 XML 结构。只需声明所需的字符实体,例如:
<!ENTITY nbsp " ">
xslt_last_modified#
在 XSLT 转换期间允许保留原始响应中的 "Last-Modified" 头字段,以便于响应缓存。
默认情况下,头字段被移除,因为响应的内容在转换期间被修改,可能包含动态生成的元素或与原始响应独立更改的部分。
xslt_param#
定义 XSLT 样式表的参数。值被视为 XPath 表达式。值可以包含变量。要将字符串值传递给样式表,可以使用 xslt_string_param 指令。
可以有多个 xslt_param 指令。如果当前级别没有定义 xslt_param 和 xslt_string_param 指令,则这些指令将从上一个配置级别继承。
xslt_string_param#
定义 XSLT 样式表的字符串参数。值中的 XPath 表达式不被解释。值可以包含变量。
可以有多个 xslt_string_param 指令。如果当前级别没有定义 xslt_param 和 xslt_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 类型的响应进行转换,除了 "text/xml" 之外。特殊值 "*" 匹配任何 MIME 类型。如果转换结果是 HTML 响应,则其 MIME 类型更改为 "text/html"。