При создании 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>
Тогда мой результат в порядке и как я и ожидал:
это некий пользовательский
контент
Очевидно, я не хочу, чтобы эти дополнительные разрывы строк исходили от самих элементов, но я действительно хочу сохранить перевод строки из текстового содержимого. Есть ли способ сделать это? Или есть альтернативное решение для сортировки разрывов строк?