Я использую XSL FO для создания файла PDF, содержащего таблицу с информацией. Один из этих столбцов является столбцом «Описание». Пример строки, которую я заполняю одним из этих полей описания, выглядит следующим образом:
This is an example Description.<br/>List item 1<br/>List item 2<br/>List item 3<br/>List item 4
Внутри ячейки таблицы, которая соответствует этому описанию, я бы хотел, чтобы вывод отображался следующим образом:
This is an example Description.
List item 1
List item 2
List item 3
List item 4
Я узнал из поиска в другом месте, что вы можете делать разрывы строк в XSL FO, используя <fo:block></fo:block>
внутри другого <fo:block>
элемента. Поэтому, даже прежде чем я проанализирую XML с моей таблицей стилей XSL, я заменяю все вхождения <br/>
на <fo:block/>
, так что буквальное значение строки теперь выглядит так:
This is an example Description.<fo:block/>List item 1<fo:block/>List item 2<fo:block/>List item 3<fo:block/>List item 4
Проблема возникает, когда строка описания, которую я использую, получается с использованием <xsl:value-of>
, например, следующим образом:
<fo:block>
<xsl:value-of select="descriptionStr"/>
</fo:block>
В этом случае значение, которое выводится в мой PDF-документ, является литеральным значением, поэтому оно выглядит точно так же, как и в предыдущем примере со всеми литералами <fo:block/>
. Я попытался вручную жестко кодировать <fo:block/>
в середине другой строки, и он отображается правильно. Например. если я напишу в моей таблице стилей:
<fo:block>Te<fo:block/>st</fo:block>
Будет отображаться правильно как:
Te
st
Но, похоже, этого не происходит, когда <fo:block/>
находится внутри значения оператора <xsl:value-of select=""/>
. Я пытался найти это на SO, а также в Google и т. Д. Безрезультатно. Любой совет или помощь будут с благодарностью. Спасибо!