XSLT生成纯文本的关键是设置并禁用自动格式化:需指定method="text"、indent="no"、encoding="UTF-8",用和直出内容,配合及紧凑模板写法控制空白。

用 XSLT 生成纯文本文件,关键在于正确设置 ,并避免 XML/HTML 默认的格式化行为(如自动缩进、添加声明、转义特殊字符等)。
基础配置:指定 text 输出方法
在样式表根元素内添加输出声明,明确告诉处理器你想要纯文本:
-
—— 最简必要配置 - 推荐加上
indent="no"防止 XSLT 处理器(尤其是某些支持 HTML 模式的处理器)自动插入空格或换行 - 若需 Windows 换行符,可加
media-type="text/plain"(非必需,但部分环境更稳妥)
内容组织:只输出你想要的文本
使用 和 直接拼接内容,不包裹任何标签:
Hello, ! - 避免写
—— 这会输出字面的 `` 标签,不是你想要的纯文本
- 用
显式插入换行符(是 Unicode 换行符)
控制空白:避免意外空格和换行
XSLT 默认会保留模板中写的空白(包括换行和缩进),这在 text 模式下极易导致多余空行:
- 在
上加属性:exclude-result-prefixes="#all"(可选,但整洁) - 用
去掉源 XML 中无关空白(对输入有效) - 更关键的是:把模板内容写成一行,或用
包裹所有显式空白,例如:Name: Age:
常见陷阱提醒
这些小细节常导致输出“看起来像 XML”或“多出空行”:
- 没关
indent="no"→ 处理器可能自动缩进内容(尤其用 Saxon 或 oXygen 时) - 模板里写了换行却没用
包裹 → 那个换行会被当作文本节点输出 - 用了
或未匹配模板 → 可能输出原始 XML 字符(如zuojiankuohaophpcn)而非预期文本 -
编码不一致(如 XSLT 文件存为 UTF-8 BOM,但 output 指定
encoding="ISO-8859-1")→ 出现乱码
基本上就这些。只要 method 设对、空白控住、内容直出,XSLT 生成文本文件很干净利落。










