XSLT作为XML文档转换的核心技术,在需要输出多语言内容、适配不同地区本地化规则的场景中应用广泛。通过合理的配置和语法使用,XSLT可以轻松实现内容的多语言切换,同时适配不同地区的格式规范。

XSLT国际化输出的核心思路
XSLT实现国际化输出的核心逻辑是分离内容与语言配置,通过外部语言资源文件存储不同语言的翻译文本,在转换过程中根据指定的语言标识动态加载对应内容。同时结合XSLT的本地化函数,处理日期、数字、货币等格式的适配。
1. 准备多语言资源文件
首先需要创建存储不同语言翻译的XML资源文件,通常按照语言编码区分不同版本,示例如下:
<?xml version="1.0" encoding="UTF-8"?>
<language_resources>
<language code="zh">
<welcome>欢迎访问我们的网站</welcome>
<greeting>您好</greeting>
<date_format>yyyy年MM月dd日</date_format>
</language>
<language code="en">
<welcome>Welcome to our website</welcome>
<greeting>Hello</greeting>
<date_format>MM/dd/yyyy</date_format>
</language>
</language_resources>
2. 在XSLT中引入语言资源
使用xsl:param定义语言参数,通过document()函数加载对应的语言资源文件,示例代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- 定义语言参数,默认值为中文 -->
<xsl:param name="lang" select="'zh'"/>
<!-- 加载语言资源文件 -->
<xsl:variable name="lang_resources" select="document('language_resources.xml')/language_resources/language[@code=$lang]"/>
</xsl:stylesheet>
多语言内容动态输出实现
完成资源加载后,就可以通过XPath表达式从资源中提取对应语言的文本内容,实现动态输出。以下是完整的转换示例:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="lang" select="'zh'"/>
<xsl:variable name="lang_resources" select="document('language_resources.xml')/language_resources/language[@code=$lang]"/>
<xsl:template match="/">
<html>
<head>
<title><xsl:value-of select="$lang_resources/welcome"/></title>
</head>
<body>
<h1><xsl:value-of select="$lang_resources/greeting"/></h1>
<p><xsl:value-of select="$lang_resources/welcome"/></p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
当传入lang参数为zh时,输出的HTML内容为中文;传入en时,输出英文内容,实现多语言切换。
本地化格式适配配置
除了文本内容翻译,XSLT还可以通过内置函数实现日期、数字、货币等格式的本地化适配,常用的函数包括format-date()、format-number()等。
日期格式本地化
结合之前资源文件中定义的日期格式,实现不同地区的日期输出:
<xsl:template match="/">
<xsl:variable name="current_date" select="'2024-05-20'"/>
<p>
当前日期:
<xsl:choose>
<xsl:when test="$lang='zh'">
<xsl:value-of select="format-date($current_date, $lang_resources/date_format)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="format-date($current_date, $lang_resources/date_format)"/>
</xsl:otherwise>
</xsl:choose>
</p>
</xsl:template>
数字与货币格式本地化
使用format-number()函数适配不同地区的数字格式,例如中文地区使用逗号作为千位分隔符,英文部分地区使用点作为小数分隔符:
<xsl:template match="/">
<xsl:variable name="price" select="1999.99"/>
<p>
商品价格:
<xsl:choose>
<xsl:when test="$lang='zh'">
<xsl:value-of select="format-number($price, '¥#,##0.00')"/>
</xsl:when>
<xsl:when test="$lang='en'">
<xsl:value-of select="format-number($price, '$#,##0.00')"/>
</xsl:when>
</xsl:choose>
</p>
</xsl:template>
常见问题与注意事项
- 语言资源文件的路径需要正确配置,避免
document()函数加载失败 - 语言编码需要与XML文件的编码保持一致,避免出现乱码问题
- 如果涉及更多地区的本地化规则,可以在资源文件中扩展对应的配置项,无需修改XSLT的核心转换逻辑
- 测试时需要分别传入不同的
lang参数,验证所有内容的输出是否符合预期
通过以上配置,XSLT可以完整实现多语言转换与本地化输出需求,适配不同地区的用户访问场景,同时保持转换逻辑的清晰和可维护性。
XSLT多语言转换本地化输出xml_localization修改时间:2026-07-21 09:12:31