在XSLT转换中,xsl:variable和xsl:param是两个非常基础且常用的元素。它们都能保存数据供后续使用,但定位不同。变量一旦定义便不可修改,参数则允许从外部或调用方传入值,未传时使用默认。掌握二者用法,能让XML转换逻辑更清晰。

xsl:variable的基本用法
使用xsl:variable可以定义一个局部或全局的变量,通过select属性或标签内容赋值。下面的例子定义了一个全局变量并输出它:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- 定义全局变量 -->
<xsl:variable name="siteName" select="'ipipp.com'" />
<xsl:template match="/">
<p>网站名称:<xsl:value-of select="$siteName" /></p>
</xsl:template>
</xsl:stylesheet>
xsl:param的参数传递
xsl:param用于声明参数,常见于模板或根元素。它支持外部传入,比如通过处理器API设置。下面示例在模板中声明参数并使用默认值:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="title" select="'默认标题'" />
<xsl:template match="/">
<h1><xsl:value-of select="$title" /></h1>
</xsl:template>
</xsl:stylesheet>
从外部覆盖参数
如果使用命令行或程序调用,可以传参覆盖。例如在Java中设置参数title为“技术文章”,输出便会变化。这展示了xsl:param的动态能力。
变量与参数的区别总结
- xsl:variable定义后不能改,xsl:param可被外部或调用模板传值
- 变量适合固定配置,参数适合灵活输入
- 二者都以$符号在表达式中引用
综合示例
下面例子结合变量与参数,根据传入语言参数输出不同问候:
<?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="greeting">
<xsl:choose>
<xsl:when test="$lang='zh'">你好</xsl:when>
<xsl:otherwise>Hello</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:template match="/">
<p><xsl:value-of select="$greeting" /></p>
</xsl:template>
</xsl:stylesheet>
通过上述示例可以看到,合理运用xsl:variable和xsl:param能够显著提升XSLT脚本的可读性与适应性。
XSLTxsl:variablexsl:param修改时间:2026-07-26 09:06:18