Сохранить заголовок с первой строкой следующего блока - PullRequest
0 голосов
/ 06 октября 2009

В конце страницы я не хочу выделять ярлык «examClin». Так что, если когда-либо, ярлык прибывает в конец страницы, мне нужно ОДИН и не более одной строки examClin, чтобы присоединить с @label of 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>

Ответы [ 2 ]

0 голосов
/ 13 октября 2009

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

Я создал следующий шаблон: идея состоит в том, чтобы найти, какой будет первая строка: либо 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>
0 голосов
/ 06 октября 2009

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

...