怎么用XSLT生成文本文件 output method=text

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 中无关空白(对输入有效)
  • 更关键的是:把模板内容写成一行,或用 包裹所有显式空白,例如:

常见陷阱提醒

这些小细节常导致输出“看起来像 XML”或“多出空行”:

  • 没关 indent="no" → 处理器可能自动缩进内容(尤其用 Saxon 或 oXygen 时)
  • 模板里写了换行却没用 包裹 → 那个换行会被当作文本节点输出
  • 用了 或未匹配模板 → 可能输出原始 XML 字符(如 zuojiankuohaophpcn)而非预期文本
  • 编码不一致(如 XSLT 文件存为 UTF-8 BOM,但 output 指定 encoding="ISO-8859-1")→ 出现乱码

基本上就这些。只要 method 设对、空白控住、内容直出,XSLT 生成文本文件很干净利落。