模块 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
配置参数启用。
此模块需要 libxml2 和 libxslt 库。
配置示例
location / { xml_entities /site/dtd/entities.dtd; xslt_stylesheet /site/xslt/one.xslt param=value; xslt_stylesheet /site/xslt/two.xslt; }
指令
语法 |
xml_entities |
---|---|
默认值 | — |
上下文 |
http , server , location |
指定声明字符实体的 DTD 文件。此文件在配置阶段编译。出于技术原因,模块无法使用处理的 XML 中声明的外部子集,因此会忽略该子集,并使用一个专门定义的文件来代替。此文件不应描述 XML 结构。只需声明所需的字符实体即可,例如
<!ENTITY nbsp " ">
语法 |
xslt_last_modified |
---|---|
默认值 |
xslt_last_modified off; |
上下文 |
http , server , location |
此指令出现在 1.5.1 版本中。
允许在 XSLT 转换期间保留原始响应中的“Last-Modified”头部字段,以便于响应缓存。
默认情况下,此头部字段会被移除,因为响应的内容在转换期间会被修改,并且可能包含独立于原始响应而动态生成或更改的元素或部分。
语法 |
xslt_param |
---|---|
默认值 | — |
上下文 |
http , server , location |
此指令出现在 1.1.18 版本中。
定义 XSLT 样式表的参数。value
被视为 XPath 表达式。value
可以包含变量。要将字符串值传递给样式表,可以使用 xslt_string_param 指令。
可以有多个 xslt_param
指令。当且仅当当前级别没有定义 xslt_param
和 xslt_string_param 指令时,这些指令才从上一配置级别继承。
语法 |
xslt_string_param |
---|---|
默认值 | — |
上下文 |
http , server , location |
此指令出现在 1.1.18 版本中。
定义 XSLT 样式表的字符串参数。value
中的 XPath 表达式不会被解释。value
可以包含变量。
可以有多个 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 |
---|---|
默认值 |
xslt_types text/xml; |
上下文 |
http , server , location |
除了“text/xml
”之外,启用对具有指定 MIME 类型的响应进行转换。特殊值“*
”匹配任何 MIME 类型 (0.8.29)。如果转换结果是 HTML 响应,其 MIME 类型会更改为“text/html
”。