XSLT生成纯文本的关键是设置<xsl:output method="text"/>,并避免XML/HTML结构;需用<xsl:text>控制空白、禁用默认模板输出、显式处理换行与编码。

用XSLT生成纯文本文件,关键在于设置输出方法为 text,并避免生成任何XML/HTML结构(如开始标签、结束标签、属性、命名空间等)。默认情况下XSLT处理器会以XML方式序列化结果,必须显式声明文本输出行为。
设置 output method="text"
在样式表的顶层 <xsl:output> 元素中指定 method="text",这是最核心的一步。它告诉处理器:不要添加XML声明、不转义特殊字符(如 <、&)、不自动缩进、不补全标签。
示例:
<xsl:output method="text" encoding="UTF-8"/>避免使用 HTML/XML 输出惯用写法
生成文本时需特别注意以下常见陷阱:
立即学习“前端免费学习笔记(深入)”;
- 不要用
<xsl:element>或字面量标签(如<div>),它们会产生标记; - 不要依赖
<xsl:copy>或<xsl:apply-templates>默认行为——若模板匹配元素节点且未定义文本处理逻辑,可能意外输出子元素名或混合内容; - 慎用
<xsl:value-of>的separator属性(XSLT 2.0+)——它只对节点集有效,但若节点含子元素,仍可能触发默认规则; - 用
<xsl:text>显式插入换行、空格、制表符等不可见字符,例如<xsl:text> </xsl:text>表示换行。
控制空白与换行
XML源中的空白可能被保留并输出,影响文本格式。建议:
- 用
<xsl:strip-space elements="*"/>移除所有元素间的无关空白; - 对需要保留缩进或空行的模板,用
<xsl:text>精确控制; - 避免在模板中写多行字面文本(如
<p>第一行 第二行</p>),因为XSLT解析器可能规范化换行符;改用<xsl:text>分段。
处理特殊字符与编码
文本输出不自动转义,所以直接输出 &、< 是安全的——但前提是你的数据本身不含非法字符(如控制字符)。需注意:
- 确保
<xsl:output encoding="...">与目标系统兼容(如 Windows 记事本常需 UTF-8 with BOM,可用处理器扩展或后处理添加); - 若需输出制表符,写
<xsl:text> </xsl:text>,而非字面\t(XSLT不识别反斜杠转义); - 字符串拼接用
<xsl:value-of select="concat(...)">更可靠,避免隐式空格合并。











