ngx_http_xslt_module 模块

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 指令

语 法: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

此指令出现在版本1.5.1中。

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

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

xslt_param 指令

语 法:xslt_param parameter value;
默认值:—
上下文:http, server, location

此指令出现在版本1.1.18中。

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

可能有几个 xslt_string_param 指令。当且仅当在当前级别上没有定义 xslt_param 和 xslt_string_param 指令时,这些指令才从上一个配置级别继承。

xslt_string_param 指令

语 法:xslt_string_param parameter value;
默认值:—
上下文:http, server, location

此指令出现在版本1.1.18中。

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

可能有几个 xslt_string_param 指令。当且仅当在当前级别上没有定义 xslt_param 和 xslt_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 类型(0.8.29)。如果转换结果是 HTML 响应,则其MIME类型将更改为 “text/html”。

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号