Nginx 可通过 ngx_http_xslt_module 模块在服务器端实时将 XML 静态文件用 XSLT 1.0 样式表转换为 HTML,需编译启用该模块、安装 libxml2/libxslt 库、正确配置 location 与 xslt_stylesheet 路径,并确保 XML/XSLT 文件良构。

直接用 ngx_http_xslt_module 在 Nginx 层把 XML 静态文件转成 HTML,核心是让 Nginx 读取 XML 文件后、发给浏览器前,用 XSLT 样式表实时转换。这不是前端加载或离线生成,而是由 Nginx 进程完成的服务器端动态转换。
确认模块已编译并可用
Nginx 必须带 --with-http_xslt_module 编译,且运行时加载了该模块。大多数系统默认安装包(如 Ubuntu 官方源)不含此模块。
- 执行
nginx -V 2>&1 | grep -o with-http_xslt_module,有输出说明已启用 - 若无输出,需重装含模块的版本(如 Debian/Ubuntu 可换用
nginx-extras包) - 确保系统已安装
libxml2和libxslt运行时库(如 Ubuntu 上运行apt install libxml2 libxslt1.1)
配置 location 块服务 XML 文件
将 XML 文件放在 Nginx 可访问路径下(如 /var/www/data/users.xml),然后在 server 块中定义 location,指向该文件并启用转换:
- 用
alias或root指向 XML 所在目录,确保能直接响应 XML 内容 -
xslt_stylesheet后跟绝对路径(如/var/www/xslt/users2html.xsl),Nginx 主进程需有读权限 -
xslt_types至少包含text/xml;若 XML 响应头是application/xml或application/rss+xml,也需显式加入
示例配置:
location = /users.xml {
alias /var/www/data/users.xml;
xslt_stylesheet /var/www/xslt/users2html.xsl;
xslt_types text/xml application/xml;
}
编写符合要求的 XSLT 文件
XSLT 必须是 XSLT 1.0 标准(模块不支持 2.0/3.0),且样式表本身要良构、无语法错误。输出方法建议设为 html 或 xhtml,以匹配目标格式:
- 根元素为
,声明xmlns:xsl="http://www.w3.org/1999/XSL/Transform"和version="1.0" - 模板中用
明确输出 HTML - 避免在属性值中直接插值敏感内容(如
title="{/user/name}"),以防特殊字符引发解析问题;可改用+组合保障转义
可选:传参实现轻量定制
如果希望同一份 XML 根据请求参数呈现不同 HTML(如切换主题、语言),可用 xslt_param 或 xslt_string_param 向 XSLT 传值:
-
xslt_param lang $arg_lang;→ XSLT 中用接收,值为 XPath 表达式结果 -
xslt_string_param theme "$cookie_theme";→ 直接传字符串,不经过 XPath 解析,更安全 - 参数在 XSLT 中通过
等方式控制逻辑分支
整个过程不依赖后端应用,XML 是静态文件,XSLT 是静态样式表,转换完全由 Nginx 实时完成。只要路径正确、模块就位、XML 和 XSLT 良构,就能稳定输出 HTML 页面。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











