xsl:strip-space和xsl:preserve-space用于控制XSLT中纯空白文本节点的保留或删除:前者删除指定元素内纯空白节点,后者强制保留;推荐先全局strip-space再针对性preserve-space。

xsl:strip-space 和 xsl:preserve-space 是 XSLT 中控制空白字符(空格、制表符、换行符)如何被处理的两个核心指令。它们不改变 XML 内容本身,而是告诉 XSLT 处理器:对哪些元素里的“纯空白文本节点”,该删还是该留。
解决的是什么问题
XML 源文件中常有为可读性添加的缩进和换行,比如:
XML入门 张三
这些换行和空格在解析时会生成“纯空白文本节点”。默认情况下,XSLT 会保留全部——但多数 HTML 输出或结构化数据转换并不需要它们,反而会导致多余空行、错位或 XPath 匹配失败。
strip-space:主动清理无意义空白
它声明哪些元素内的纯空白节点应被直接丢弃。适用于数据型内容,如数值、ID、日期等:
-
写法示例:
- 只影响“纯空白”节点(即整段内容全是空白),不影响
中的前后空格Hello - 能减少结果树节点数量,轻微提升性能和输出整洁度
preserve-space:有选择地保留格式
它覆盖 strip-space 的规则,强制保留指定元素中的纯空白。适用于需原样呈现的场景:
-
写法示例:
- 常见于代码块、诗歌、配置片段等依赖缩进/换行的内容
- 当一个元素同时被 strip-space 和 preserve-space 声明时,preserve-space 优先生效
实际使用建议
别依赖默认行为——看似省事,实则容易引发“幽灵空白”或意外截断。推荐做法是:
- 顶层先用
清除所有默认空白(白名单策略起点) - 再用
精准放行需要格式的元素 - 避免混用通配符和具体名(如
elements="* title"),不同处理器解析可能不一致
基本上就这些。不复杂但容易忽略,一加一减之间,输出就干净了。










