2013-06-04 1 views
0

Мы сталкиваемся с проблемой форматирования публикации публикации в формате PDF из XML-контента. В столбцах таблицы, текст в ячейке таблицы содержит некоторый текст (номера моделей), например,XSL-FO: выход в формате PDF: текст с пространством разрешен для обертывания строк внутри столбца таблицы

AD150, OP834,
HT78J, QW09T,
OL560, PQ
В, AG800, XN280

как выделено, упомянутые названия моделей разделены на две строки, если в названии есть пробел («PQ UW»). Это происходит даже при наличии достаточной ширины ячейки для размещения текста после пробела. Однако в случае отсутствия места текст разбивается на обычную ширину столбца.

Пожалуйста, предложите решение, чтобы исправить это, чтобы текст всегда отображался в одной строке (не врываясь в новую строку), даже если в них есть пространство. Текст должен ломаться только при обычной ширине ячейки.

+0

Что рендерер вы используете? Fop? –

+0

Вы преобразовываете XML в XSL-FO? Если да, то каковы эти номера моделей в оригинальном XML? –

+0

Вы также можете попробовать

ответ

0

Одна дешевая вещь, которую нужно попробовать: при рендеринге имен моделей измените пробелы на символ U + 00A0, неразрывное пространство. Что-то вроде этого:

<xsl:template match="model-name"> 
    <xsl:value-of select="translate(.,' ','&#xA0;')"/> 
</xsl:template> 
1

Пример предоставленного XSL будет хорошо работать, если входной XML имеет отдельные теги для каждого номера модели. Если этого не произойдет, и источник XML-то вроде этого:

< modellist> OL560, PQ UW, AG800 </modellist>

Тогда можно было бы написать рекурсивный шаблон для обработки с помощью каждого символа в списке, запись результата в переменную (поиск рекурсивного шаблона XSL для разбиения на пример). Это было бы не так сложно. Вы должны вывести любой пробельный символ, который следует за «,» обычно, но замените любой символ пробела, не следующий за «,», как указано выше (с неразрывным пробелом).

Начните здесь вдохновение:

Breaking long lines