Как сохранить форматирование с помощью XSL-FO (сохраняя символы CR-LF)? - PullRequest
1 голос
/ 21 мая 2011

Я пытаюсь встроить некоторый текст в PDF-файл, созданный с использованием XSL-FO / xslt. Мой текст вставлен правильно, но LineFeed и Carriage Returns удалены, поэтому мой текстовый файл - просто огромный блок текста.

Я использую unparsed-text () , чтобы получить содержимое текстового файла. Я использовал white-space-collapse = "false" , чтобы попытаться получить неформатированный текст.

<fo:block font-family="monospace" white-space-collapse="false" wrap-option="no-wrap">
    <xsl:value-of select="unparsed-text($EXTERNAL_DOCUMENT_FILENAME)" disable-output-escaping="yes"/>
</fo:block>

Спасибо!

===========

EDIT

Я только что попробовал это, и я заметил, что вывод не форматируется ...

<fo:block font-family="monospace" white-space-collapse="false" wrap-option="wrap">
    <!--<xsl:value-of select="unparsed-text($EXTERNAL_DOCUMENT_FILENAME)" />-->
Hi this is me,
Then this is him,

Then I have set the value.

    OK?
</fo:block>

Я ожидал точно такой же текст с LF и CR, почему?

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Вот ответ, который я нашел:

<fo:block font-family="monospace" wrap-option="wrap" linefeed-treatment="preserve" white-space-collapse="false" white-space-treatment="preserve">
    <!--<xsl:apply-templates select="*|text()"/>-->
    <xsl:value-of select='n1:text/text()'/>
</fo:block>

Это отлично работает, xsl-fo удаляла CR-LF.

0 голосов
/ 21 мая 2011

Не использовать <xsl:strip-space="yes"/>.

Кроме того, DOE не является обязательной функцией и в XSLT 2.0 может поддерживаться только для функций обратной совместимости.Постарайся избежать этого.

Попробуйте небольшой текстовый файл и посмотрите, получены ли символы NL в результате unparsed-text() (без XSL-FO вообще).Если присутствуют символы NL, то ваш вопрос, скорее всего, относится только к XSL-FO, а не к XSLT.Если символы NL отсутствуют, то это указывает на ошибку в реализации вашего процессора XSLT unparsed-text() - поэтому обратитесь к поставщику и сообщите об ошибке.

...