XSLT中xsl:template的异常行为:奇怪输出原因咨询
XSLT模板出现奇怪输出的原因解析
从截图呈现的内容来看,问题根源是XSLT的默认模板规则在起作用:
- 当你没有为XML文档里的部分节点(比如文本节点、未被自定义模板匹配的元素节点)编写对应模板时,XSLT处理器会自动启用内置的默认模板:
- 针对元素节点,默认模板会递归处理它的所有子节点
- 针对文本节点,默认模板会直接输出文本内容
- 你的XSLT仅匹配了特定目标节点(比如截图里的图书相关节点),但XML中其他未被匹配的文本节点(包括节点间的空白、换行符)被默认模板直接输出,最终导致杂乱的额外内容出现在结果里。
对应的解决思路:
- 显式添加匹配所有文本节点的空模板,阻断默认输出:
<xsl:template match="text()"/>
- 或者编写匹配根节点的模板,精准控制要处理的节点范围,避免递归触发默认模板:
<xsl:template match="/"> <xsl:apply-templates select="你的目标根子节点"/> </xsl:template>
内容的提问来源于stack exchange,提问作者joudia
相关产品推荐
相关产品推荐

