Невозможно заставить символ новой строки работать в XSLT в Excel

У меня есть XSLT-файл для преобразования XML для вывода XML, содержащего теги Excel, такие как Row, Cell и т. Д.

Файл XSLT имеет следующую строку:

<xsl:output method="xml" version="1.0" indent="yes" /> 

Мне нужно отобразить многострочный текст в одной ячейке Excel, и я пытаюсь создать эту ячейку с помощью этого шаблона:

 <Cell> <Data ss:Type="String"> <xsl:value-of select="First Line" /> <xsl:text disable-output-escaping="yes">&amp;amp;#10;</xsl:text> <xsl:value-of select="Second Line" /> </Data> </Cell> 

Я пытаюсь получить буквальное сущность символа в моем выходе, например:

 <Cell> <Data ss:Type="String">First Line
Second Line</Data> </Cell> 

Но вместо этого выходной XML получается:

 <Cell> <Data ss:Type="String">First Line&amp;#10;Second Line</Data> </Cell> 

Следовательно, когда я сохраняю выходной XML как .xls и открываю его в Excel 365, текст НЕ является многострочным. Вместо этого соответствующая ячейка содержит лирную строку:

Первая линия и вторая линия

Я также попробовал следующее, но он не работает:

 <xsl:text disable-output-escaping="yes"><![CDATA[&]]></xsl:text> 

Это также не работает:

 <xsl:text>&amp;#</xsl:text> <xsl:value-of select="10" /> <xsl:text>;</xsl:text> 

Как я могу получить результат, который мне нужен?

Я использую Office 365 и Visual Studio 2012.

Вы пояснили, что пытаетесь испускать XML-текст, содержащий числовой символ, а именно &#10; , Первый пример, который вы представили, – это правильный подход, и он работает для меня, вопреки вашим требованиям.

Например, обработка этого XML:

 <cell/> 

согласно этой таблице стилей:

 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" indent="yes"/> <xsl:template match="cell"> <cell> <xsl:value-of select="'First Line'"/> <xsl:text disable-output-escaping="yes">&amp;#10;</xsl:text> <xsl:value-of select="'Second Line'"/> </cell> </xsl:template> </xsl:stylesheet> 

через xsltproc производит этот вывод:

 <?xml version="1.0"?> <cell>First Line&#10;Second Line</cell> 

, который является формой, которую вы ищете, насколько я понимаю. В частности, текстовое поле с disable-output-escaping="yes" является подходящим методом для выдачи литерала, имеющего форму разметки.

Я склонен сомневаться в том, что конкретный подход, который, как вы говорите, вы пробовали первым, действительно дал результат, который вы утверждаете. Это то, что вы должны получить без disable-output-escaping , поэтому, возможно, вы опустили этот атрибут или ошибочно написали его в своем фактическом тесте. Если вы включили его точно так, как показано на рисунке, и получили результат, который вы представляете, я склонен думать, что ваш процессор XSLT сломан.

  • Как создать файл xlsx из XML, используя XSLT в java
  • Трансформация странности
  • Форматирование и организация результата электронной таблицы
  • Применение XSLT в XML перед импортом в Excel
  • Не удается открыть файл .xls после обновления Office
  • Does ss: AutoFitHeight работает для текста?
  • XSLT: передача параметров цвета текста Excel в шаблоны
  • Возможно ли создать файл Excel с диаграммами на основе XML?
  • Электронная таблица Excel для HTML-программ
  • Лист стилей XSL больше не работает в Excel
  • Не удается создать общий xslt для вывода xsl xml
  • Давайте будем гением компьютера.