2009-10-06 2 views
0

В конце страницы я не хочу, чтобы метка «examClin» была изолирована. Поэтому, если когда-либо, ярлык попадает в конец страницы, мне нужно ОДНО и не более одной строки examClin, которая должна быть прикреплена с помощью метки @ examClin ... Или оба элемента должны перейти на следующую страницу. Я достаточно ясно?Сохраните заголовок с первой строкой следующего блока

различные элементы ... мы приходим к концу страницы

<fo:table-row> 
    <fo:table-cell number-columns-spanned="5"> 
     <fo:block space-before="2mm"> 
      <xsl:value-of select="./examClin/@label"/>: </fo:inline> 
     </fo:block> 
    </fo:table-cell> 
    </fo:table-row> 
<fo:table-row> 
    <fo:table-cell number-columns-spanned="5" padding-top="2mm" padding-bottom="2mm" 
            padding-left="1mm" padding-right="1mm"> 
    <fo:block white-space-collapse="false" font-style="italic" > 
      <xsl:value-of select="./examClin/child::text()"/> 
    </fo:block> 
    </fo:table-cell> 
    </fo:table-row> 

ответ

0

Поместите их в единый блок (это означает, что вы должны объединить две строки таблицы в один) и использовать keep-together.

0

Спасибо Аарон. Но потом я боюсь, что если это очень длинный текст, все будет держаться вместе, а не только в первой строке. В результате он может оставить длинный белый блок на предыдущей странице.

Я создал следующий шаблон: идея состоит в том, чтобы найти, что первая строка будет: либо 75 первых символов, но если мы найдем каретку возврата перед 75 первыми символами, мы возьмем строку перед первой возвратной кареткой ,

<xsl:template name="elem3"> 
    <xsl:choose> 
     <xsl:when test="child::text()"> 
      <xsl:variable name="test0" select="substring(child::text(),1,100000)"/> 
      <xsl:variable name="test1" select="substring(child::text(),0,75)"/> 
      <xsl:variable name="test2" select="substring(child::text(),75,100000)"/> 
      <xsl:variable name="test3" select="substring-before($test2,' ')"/> 
      <xsl:variable name="test4" select="concat($test1,$test3)"/> 
      <xsl:variable name="test5" select="substring-after($test2,' ')"/> 
      <xsl:variable name="test6" select="substring-before($test1,'&#10;')"/> 
      <xsl:variable name="test7" select="substring-after($test0,'&#10;')"/> 
      <fo:table-row> 
       <fo:table-cell number-columns-spanned="5"> 
        <fo:block space-before="2mm"> 
         <fo:inline font-weight="bold"><xsl:value-of select="@label"/>: </fo:inline> 
        </fo:block> 
       </fo:table-cell> 
      </fo:table-row> 
      <xsl:choose> 
       <xsl:when test="child::text()"> 
        <fo:table-row keep-with-previous="always"> 
         <fo:table-cell number-columns-spanned="6" padding-top="2mm" padding-left="1mm" padding-right="1mm"> 
          <fo:block white-space-collapse="false" font-style="italic" > 
          <xsl:choose> 
           <xsl:when test="contains($test1,'&#10;')"> <xsl:value-of select="$test6"/></xsl:when> 
           <xsl:otherwise><xsl:value-of select="$test4"/></xsl:otherwise> 
          </xsl:choose> 
          </fo:block> 
         </fo:table-cell> 
        </fo:table-row> 
        <fo:table-row> 
         <fo:table-cell number-columns-spanned="5" padding-left="1mm" padding-right="1mm"> 
          <fo:block white-space-collapse="false" font-style="italic" > 
           <xsl:choose> 
            <xsl:when test="contains($test1,'&#10;')"><xsl:value-of select="$test7"/></xsl:when> 
            <xsl:otherwise> <xsl:value-of select="$test5"/></xsl:otherwise> 
            </xsl:choose> 
          </fo:block> 
         </fo:table-cell> 
        </fo:table-row> 
       </xsl:when> 
      </xsl:choose> 
     </xsl:when> 
    </xsl:choose> 
</xsl:template>