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 匹配失败。
它声明哪些元素内的纯空白节点应被直接丢弃。适用于数据型内容,如数值、ID、日期等:
Hello 中的前后空格它覆盖 strip-space 的规则,强制保留指定元素中的纯空白。适用于需原样呈现的场景:
块、诗歌、配置片段等依赖缩进/换行的内容别依赖默认行为——看似省事,实则容易引发“幽灵空白”或意外截断。推荐做法是:
清除所有默认空白(白名单策略起点) 精准放行需要格式的元素elements="* title"),不同处理器解析可能不一致基本上就这些。不复杂但容易忽略,一加一减之间,输出就干净了。