2017-02-15 18 views
0
<xsl:for-each select="../div"> 
    <xsl:choose> 
    <xsl:when test="@class='champLibre'"> 
     <fo:inline keep-with-next.within-line="always" > 
     <xsl:value-of select="text()"/> 
     </fo:inline> 
     <fo:inline border-bottom-style="dotted" border-bottom-color="#000" 
      border-bottom-width="1pt"><xsl:value-of select="div/text()"/> 
      <xsl:text>&#160;&#160;&#160;&#160;&#160;&#160;</xsl:text> 
     </fo:inline> 
    </xsl:when> 

Я хочу выровнять блок (содержимое div + некоторый текст) в том же line, так что когда дело доходит до конца строки, блок, содержащий div + некоторый текст, должен перейти к следующей строке, если для div + некоторого текста недостаточно места.с использованием «fo inline» и держать вместе в строке, чтобы текст вышел из окна и никогда не переходил к следующей строке.

Однако, я получаю что-то вроде этого:

First line: .... some 
Second line: words:..... 

То, что я хочу это:

First line: .... 
Second line: some words:... 

without using keep

after using keep together within line

+0

Название говорит 'держать-together', но ваш пример имеет' держать-с-next': какой из них вы действительно используете? – lfurini

+0

Я попытался использовать оба из них, но у меня всегда одна и та же проблема, текст находится в одной строке, но он никогда не перейдет ко второй строке, и он выходит из страницы. Я присоединяюсь к sreenshot –

ответ

1

fo:inline (в настоящее время) должна храниться с тем, что будет дальше в очереди, и что произойдет следующий - fo:inline, который заканчивается неразрывным пространством. Вы не оставили нигде для разрыва строки.

Попробуйте положить каждую пару в отдельный fo:block:

<xsl:for-each select="../div"> 
    <xsl:choose> 
    <xsl:when test="@class='champLibre'"> 
     <fo:block> 
     <xsl:value-of select="text()"/> 
     <fo:inline border-bottom-style="dotted" border-bottom-color="#000" 
      border-bottom-width="1pt"> 
      <xsl:value-of select="div/text()"/> 
      <xsl:text>&#160;&#160;&#160;&#160;&#160;&#160;</xsl:text> 
     </fo:block> 
    </xsl:when> 
+0

, когда я кладу блок , я теряю выравнивание, потому что он внутри a ... –

+1

Я не понимаю ваш комментарий, но другим решением было бы разместить пробел или даже пространство с нулевой шириной после последнего неразрывного пространства. –

+0

Вы могли бы вместо этого задать ширину своей второй 'fo: inline', например' 'fo: inline width =" 4em ">', и избавиться от неразрывных пробелов. –