Nginx Web服务应用实战
- 5、XSLT转换服务器
- 5.1、模块配置指令
- 5.2、XSLT服务器配置样例
5、XSLT转换服务器
XSLT是用于将XML文档转换成其他格式,如XML、HTML或XHTML的脚本语言。通常我们会把XML元素转换成HTML或XHTML元素,也可以利用其语法命令对各元素进行添加、移除或重新排列。Nginx通过ngx_http_xslt_module模块对加载的XML进行动态转换。
5.1、模块配置指令
XSLT模块配置指令如表所示。
XSLT样式模板是在Nginx启动初始化时加载的,所以XSLT样式模板每次变更都需要Nginx重载配置。
5.2、XSLT服务器配置样例
本节的配置样例是将Nginx利用自动索引功能生成XML格式目录列表,通过XSLT模板将XML数据转换成Bootstrap样式的HTML表格页面,页面效果如图所示。
Nginx配置样例如下:
server{listen8081;server_name localhost;charset utf-8;root /opt/nginx-web/files;default_type text/xml;location /{autoindex on;# 启用自动页面功能autoindex_localtime on;# 使用Nginx服务器时间autoindex_format xml;# 自动页面输出格式为XMLxslt_stylesheet conf/conf.d/example/test2.xslt;# 引入XSLT模板文件}}页面模板文件test2.xslt内容如下:
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheetversion="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"><xsl:templatematch="/"><html><head><metacontent="text/html; charset=UTF-8"http-equiv="Content-Type"/><linkrel="stylesheet"href="https://cdn.staticfile.org/twitter-bootstrap/ 3.3.7/css/bootstrap.min.css"/><scriptsrc="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script><scriptsrc="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap. min.js"></script></head><body><h3>Nginx XSLT示例</h3><tableclass="table table-striped table-bordered"><thead><th>文件名</th><th>文件大小</th><th>文件修改时间</th></thead><xsl:for-eachselect="list/*"><xsl:sortselect="mtime"/><xsl:variablename="name"><xsl:value-ofselect="."/></xsl:variable><xsl:variablename="size"><xsl:iftest="string-length(@size) & gt; 0"><xsl:iftest="number(@size) & gt; 0"><xsl:choose><xsl:whentest="round(@size div 1024) & lt; 1"><xsl:value-ofselect="@size"/></xsl:when><xsl:whentest="round(@size div 1048576) & lt; 1"><xsl:value-ofselect="format-number((@size div 1024), '0.0')"/>K</xsl:when><xsl:otherwise><xsl:value-ofselect="format-number((@size div 1048576), '0.00')"/>M</xsl:otherwise></xsl:choose></xsl:if></xsl:if></xsl:variable><xsl:variablename="date"><xsl:value-ofselect="substring(@mtime,1,4)"/>-<xsl:value-ofselect="substring(@mtime,6,2)"/>-<xsl:value-ofselect="substring(@mtime,9,2)"/><xsl:text></xsl:text><xsl:value-ofselect="substring(@mtime,12,2)"/>:<xsl:value-ofselect="substring(@mtime,15,2)"/>:<xsl:value-of select="substring(@mtime,18,2)”/></xsl:variable><tr><td><ahref=”{$name}”><xsl:value-ofselect=”.”/></a></td><tdalign=”center”><xsl:value-ofselect=”$size”/></td><td><xsl:value-ofselect=”$date”/></td></tr></xsl:for-each></table></body></html></xsl:template></xsl:stylesheet>XSLT样式模板可以引入CSS、JS文件,所以它可将XML文件渲染成具有更多功能的前端动态页面。