贝利信息

XSLT如何根据条件改变输出 xsl:if和xsl:choose

日期:2026-01-26 00:00 / 作者:畫卷琴夢
XSLT中条件输出靠xsl:if(单条件判断,无else)和xsl:choose(多分支选择,含xsl:when与可选xs

l:otherwise);二者均不生成元素,仅控制模板逻辑执行,且须置于xsl:template等有效上下文中。

XSLT 中根据条件改变输出,主要靠 xsl:ifxsl:choose 两类指令,它们不生成元素,只控制是否执行某段模板逻辑。核心区别是:xsl:if 适合单条件判断(类似 if),xsl:choose 适合多分支选择(类似 if-else if-else)。

用 xsl:if 做简单开关式判断

xsl:if 接收一个 test 属性,表达式为 true 时才处理其内部内容。它没有 else 分支,也不支持嵌套 else —— 需要“否则”逻辑,得另写一个带取反条件的 xsl:if,或改用 xsl:choose

用 xsl:choose 实现多路分支

xsl:choose 必须包含至少一个 xsl:when,可选一个 xsl:otherwise 作为兜底。执行时从上到下匹配第一个为 true 的 when,之后不再检查其余分支 —— 类似 switch 或 if-else if-else 链。

常见误区和实用建议

条件表达式里的值比较要小心类型。例如 test="type = 'book'" 是字符串比较,而 test="count(author) > 1" 返回的是数字,XSLT 会自动转换,但显式用 number()string() 更可控。