模块 ngx_http_xslt_module
| Example Configuration Directives xml_entities xslt_last_modified xslt_param xslt_string_param xslt_stylesheet xslt_types |
( ngx_http_xslt_module0.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_string_param 指令时,这些指令才会从先前的配置xslt_param级别
继承。
| 句法: |
xslt_string_param |
|---|---|
| 默认: | — |
| 语境: |
http, server,location |
该指令出现在 1.1.18 版本中。
定义 XSLT 样式表的字符串参数。中的 XPath 表达式value不会被解释。可以value包含变量。
可能有多个xslt_string_param指令。当且仅当当前级别上没有定义xslt_param和
xslt_string_param指令时,这些指令才会从先前的配置级别继承。
| 句法: |
xslt_stylesheet
|
|---|---|
| 默认: | — |
| 语境: |
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 text/xml; |
| 语境: |
http, server,location |
除了“ ”之外,还可以对具有指定 MIME 类型的响应进行转换text/xml。特殊值“ *”匹配任何 MIME 类型 (0.8.29)。如果转换结果是 HTML 响应,则其 MIME 类型更改为“ text/html”。
