Сохранение перевода строки и т. Д. в текстовом содержимом XSL, но не в самих тегах

При создании XSL-документа я столкнулся со следующей проблемой. Я хочу сохранить перевод строки в исходном тексте, поэтому я установил linefeed-treatment = "preserve" . Однако это явно также означает, что переводы строк сохраняются вне текстового содержимого и в фактических элементах xml. Пример:

String content = "<fo:block white-space-collapse=\"true\" ><fo:inline>this is some </fo:inline><fo:inline font-weight=\"bold\">custom</fo:inline><fo:inline> \ncontent</fo:inline></fo:block>";

Это текст, который я использую в качестве ввода. Он преобразован в XML-документ на Java. Обратите внимание на \ n прямо перед содержимым, указывающее на новую строку. Это приведет к следующему выводу в документе FO:

<fo:block white-space-collapse="true" linefeed-treatment="preserve">
  <fo:inline>this is some</fo:inline>
  <fo:inline font-weight="bold">custom</fo:inline>
  <fo:inline> 
content</fo:inline>
</fo:block>

Таким образом, он показывает разрыв строки прямо перед текстовым содержимым, и это нормально.

Я использую Apache FOP, чтобы преобразовать это в файл PDF, а также другую стороннюю библиотеку, чтобы преобразовать это в файл DocX. В обоих случаях контент будет выглядеть следующим образом:

это некий
пользовательский

контент

Когда я вручную изменяю свой XSL и делаю его следующим образом:

<fo:block white-space-collapse="true" linefeed-treatment="preserve"><fo:inline>this is some </fo:inline><fo:inline font-weight="bold">custom</fo:inline><fo:inline> 
content</fo:inline></fo:block>

Тогда мой результат в порядке и как я и ожидал:

это некий пользовательский
контент

Очевидно, я не хочу, чтобы эти дополнительные разрывы строк исходили от самих элементов, но я действительно хочу сохранить перевод строки из текстового содержимого. Есть ли способ сделать это? Или есть альтернативное решение для сортировки разрывов строк?

5
задан Sebastiaan van den Broek 7 February 2011 в 12:11
поделиться