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

如何在MS XSLT 1.0中生成含
的SpreadsheetML Excel换行输出

问题:在MS XSLT 1.0中生成包含
实体的XML输出

我正在使用MS XSLT 1.0引擎,需要生成如下原始XML输出:

<Cell ss:StyleID="s27"><Data ss:Type="String">Catchup (Yes), &#10;FVOD(No), &#10;SVOD (No)</Data></Cell>

重点是输出中必须嵌入&amp;#10;实体(对应XML中的&#10;换行实体)。

尝试过的无效方法

方法1:使用带disable-output-escaping的xsl:text和CDATA

XSLT代码:

<Cell ss:StyleID="s27">
            <Data ss:Type="String">
                <xsl:text>Catchup (Yes), </xsl:text>
                <xsl:text disable-output-escaping="yes"><![CDATA[&#10;]]></xsl:text>
                <xsl:text>SVOD (No)</xsl:text>
            </Data>
        </Cell>

输出结果:

<ss:Cell ss:StyleID="s27">
      <ss:Data ss:Type="String">Catchup (Yes), &amp;#10;SVOD (No)</ss:Data>
    </ss:Cell>

得到的是&amp;amp;#10;转义后的结果,不符合预期。

方法2:使用&lt;xsl:text disable-output-escaping=&quot;yes&quot;&gt;&amp;amp;#10;&lt;/xsl:text&gt;

直接使用转义后的实体配合disable-output-escaping,得到的输出和方法1完全一致,仍然是&amp;amp;#10;,不符合要求。

方法3:直接写入&amp;#10;到xsl:text中

XSLT代码:

<xsl:text>Catchup (Yes), &#10;SVOD (No)</xsl:text>

输出结果:

<ss:Data ss:Type="String">Catchup (Yes), 
SVOD (No)</ss:Data>

&#10;被解析成了实际的换行符,而非保留实体形式。

补充说明

michael.hor257k提出的<xsl:text disable-output-escaping="yes">&amp;amp;#10;</xsl:text>方法在VS2022的XSLT引擎中有效,但在我基于XslTransform和XslCompiledTransform的C#常规实现中无效,暂不确定生产环境的VS2022设置是否适用。

内容的提问来源于stack exchange,提问作者MrD at KookerellaLtd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:35:28