XSLT中条件输出靠xsl:if(单条件判断,无else)和xsl:choose(多分支选择,含xsl:when与可选xsl:otherwise);二者均不生成元素,仅控制模板逻辑执行,且须置于xsl:template等有效上下文中。
XSLT 中根据条件改变输出,主要靠 xsl:if 和 xsl:choose 两类指令,它们不生成元素,只控制是否执行某段模板逻辑。核心区别是:xsl:if 适合单条件判断(类似 if),xsl:choose 适合多分支选择(类似 if-else if-else)。
xsl:if 接收一个 test 属性,表达式为 true 时才处理其内部内容。它没有 else 分支,也不支持嵌套 else —— 需要“否则”逻辑,得另写一个带取反条件的 xsl:if,或改用 xsl:choose。
有价格
高价商品
(避免空白字符干扰)xsl:choose 必须包含至少一个 xsl:when,可选一个 xsl:otherwise 作为兜底。执行时从上到下匹配第一个为 true 的 when,之后不再检查其余分支 —— 类似 switch 或 if-else if-else 链。
test 可用函数组合:比如 test="starts-with(name, 'A') and price
xsl:when 条件之间互斥性需自行保证,XSLT 不校验逻辑重叠条件表达式里的值比较要小心类型。例如 test="type = 'book'" 是字符串比较,而 test="count(author) > 1" 返回的是数字,XSLT 会自动转换,但显式用 number() 或 string() 更可控。
test="author" 等价于“author 元素存在且非空”test 中写复杂逻辑;可先用 xsl:variable 存中间结果,提升可读性xsl:if 和 xsl:choose 不能直接作为根元素,必须放在模板(xsl:template)或其他可执行上下文中