You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除XSL标签转换后在VB文件中遗留的空行?

解决XSL转VB文件时多余空行的问题

1. 清理模板里的“野生”空白

XSL模板里标签外的换行、缩进,比如<xsl:if>前后的回车,哪怕加了xsl:strip-space也没用——因为strip-space只处理元素内部的空白文本节点,模板里直接写的换行属于顶层文本节点,会被原样输出。

比如你写:

<xsl:if test="condition">
    ' 这是VB代码
</xsl:if>

这里<xsl:if>标签上下的换行和缩进就会变成空行。解决办法要么把代码和标签挤在一起:

<xsl:if test="condition">' 这是VB代码</xsl:if>

要么用<xsl:text>精准控制输出内容和换行:

<xsl:if test="condition">
    <xsl:text>' 这是VB代码&#10;</xsl:text>
</xsl:if>

&#10;是换行符,只在你需要换行的地方加,别让多余的空白混进来。

2. 全局禁用空白保留

在XSL的根元素里加上xml:space="default",再配合xsl:strip-space elements="*",把所有元素内的空白都清掉:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xml:space="default">
    <xsl:strip-space elements="*"/>
    <xsl:output method="text" encoding="utf-8"/>
    <!-- 你的模板代码 -->
</xsl:stylesheet>

3. 给<xsl:choose>这类分支“瘦身”

<xsl:choose>、<xsl:when>这些标签的缩进和换行也会产生空行,比如:

<xsl:choose>
    <xsl:when test="isTrue">
        ' 分支1代码
    </xsl:when>
    <xsl:otherwise>
        ' 分支2代码
    </xsl:otherwise>
</xsl:choose>

这里每个分支里的缩进回车都会变成空行。要么把代码直接贴在标签后面,要么用<xsl:text>把要输出的内容包起来,别留多余空白:

<xsl:choose><xsl:when test="isTrue"><xsl:text>' 分支1代码&#10;</xsl:text></xsl:when><xsl:otherwise><xsl:text>' 分支2代码&#10;</xsl:text></xsl:otherwise></xsl:choose>

虽然看起来有点丑,但能彻底解决空行问题。

4. 关闭输出缩进

有些XSL处理器哪怕指定了method="text",还是会默认加缩进,显式关掉:

<xsl:output method="text" encoding="utf-8" indent="no"/>

5. 检查源XML的空白

如果你的源XML里有多余的空白文本节点,也可能被输出出来,要么清理源XML里的无关空白,要么用xsl:strip-space把源XML的元素也包含进去。

内容的提问来源于stack exchange,提问作者Aspen Blaze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 01:52:36