Некоторые средства форматирования при задании этого:
<fo:inline>foo</fo:inline><fo:inline>foo</fo:inline><fo:inline>foo</fo:inline><fo:inline>foo</fo:inline><fo:inline>foo</fo:inline>
не будут разрываться между каждым из элементов.Таким образом, измените ваш шаблон так, чтобы выводить пробел между каждым <fo:inline>
.
См. https://en.wikipedia.org/wiki/Zero-width_space
Сущность: ​
Как:
<xsl:for-each select="/myroot/category">
<fo:inline>
<xsl:value-of select="name"/>
</fo:inline>
<xsl:text>​</xsl:text>
</xsl:for-each>
Это должно создать разрывную пробел нулевой ширины между каждым <fo:inline>
, чтобы он мог разбиваться на несколько строк.
Это, конечно, предполагает, что между ними не должно быть пробелов.
Теперь, как уже говорилось, в вышеприведенном шаблоне я хотел бы отметить, что элементы <fo:inline>
абсолютно ничего не делают (за исключением, возможно, вызывающей проблему), поскольку они не несут отдельных стилей или чего-либо еще.
Я бы предположил, что вы были бы довольны:
<xsl:for-each select="/myroot/category">
<xsl:value-of select="name"/>
</xsl:for-each>
Что на самом деле точно так же.И если ваши данные выглядят так:
<name>foo</name>
<name>bar</name>
<name>foo</name>
<name>bar</name>
<name>foo</name>
<name>bar</name>
Тогда вы получите:
foobarfoobarfoobar
И тогда вы увидите, почему нет разрывов.