2009-10-06 4 views
0

A la fin de la page, je ne souhaite pas que le label 'examClin' soit isolé. Donc, si jamais le label arrive à la fin de la page, j'ai besoin de ONE et pas plus d'une ligne de examClin à joindre avec le @label de examClin ... Ou les deux éléments devraient aller à la page suivante. Suis-je assez clair?Conserver l'en-tête avec la première ligne du bloc suivant

différents éléments ... nous arrivons à la fin de la page

<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> 

Répondre

0

les mettre dans un seul bloc (cela signifie que vous devez fusionner les deux lignes de la table en un) et utilisez keep-together.

0

Merci Aaron. Mais alors j'ai peur que si c'est un très long texte, tout va rester ensemble et pas seulement la première ligne. Par conséquent, il peut laisser un long bloc blanc sur la page précédente.

J'ai créé le modèle suivant: l'idée est de trouver ce que sera la première ligne: soit les 75 premiers caractères mais si on trouve un chariot de retour avant les 75 premiers caractères, on prendra la chaîne avant le premier retour .

<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> 
Questions connexes