如何在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), FVOD(No), SVOD (No)</Data></Cell>
重点是输出中必须嵌入&#10;实体(对应XML中的 换行实体)。
尝试过的无效方法
方法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[ ]]></xsl:text> <xsl:text>SVOD (No)</xsl:text> </Data> </Cell>
输出结果:
<ss:Cell ss:StyleID="s27"> <ss:Data ss:Type="String">Catchup (Yes), &#10;SVOD (No)</ss:Data> </ss:Cell>
得到的是&amp;#10;转义后的结果,不符合预期。
方法2:使用<xsl:text disable-output-escaping="yes">&amp;#10;</xsl:text>
直接使用转义后的实体配合disable-output-escaping,得到的输出和方法1完全一致,仍然是&amp;#10;,不符合要求。
方法3:直接写入&#10;到xsl:text中
XSLT代码:
<xsl:text>Catchup (Yes), SVOD (No)</xsl:text>
输出结果:
<ss:Data ss:Type="String">Catchup (Yes), SVOD (No)</ss:Data>
被解析成了实际的换行符,而非保留实体形式。
补充说明
michael.hor257k提出的<xsl:text disable-output-escaping="yes">&amp;#10;</xsl:text>方法在VS2022的XSLT引擎中有效,但在我基于XslTransform和XslCompiledTransform的C#常规实现中无效,暂不确定生产环境的VS2022设置是否适用。
内容的提问来源于stack exchange,提问作者MrD at KookerellaLtd
相关产品推荐
相关产品推荐

