【发布时间】:2018-10-19 16:46:46
【问题描述】:
如果表格内容扩展到下一页,则表格标题不会添加到下一页。标题正在为多个表格显示,但如果表格内容延伸到下一页,则标题不会出现并且它盯着下一页中的表格行。如果表格内容扩展,则需要在开始下一页之前附加标题。 示例 XML:
<NewDataSet>
<DefaultView>
<Department>2222</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2222</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2222</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2222</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2223</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2223</Department>
<Title>vijay</Title>
</DefaultView>
<DefaultView>
<Department>2223</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2223</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2224</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2224</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2224</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2224</Department>
<Title>vijay</Title>
</DefaultView>
<DefaultView>
<Department>2224</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2224</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2224</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2225</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2225</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2225</Department>
<Title>vijay</Title>
</DefaultView>
<DefaultView>
<Department>2225</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2225</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2226</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2226</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2226</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2226</Department>
<Title>vijay</Title>
</DefaultView> <DefaultView>
<Department>2226</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2226</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>vijay</Title>
</DefaultView> <DefaultView>
<Department>2227</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>vijay</Title>
</DefaultView> <DefaultView>
<Department>2227</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>vijay</Title>
</DefaultView> <DefaultView>
<Department>2227</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>vijay</Title>
</DefaultView> <DefaultView>
<Department>2227</Department>
<Title>Manish</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Santosh</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>Naveen</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>punith</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>bharath</Title>
</DefaultView>
<DefaultView>
<Department>2227</Department>
<Title>vijay</Title>
</DefaultView>
</NewDataSet>
XSL 示例:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:rx="http://www.renderx.com/XSL/Extensions"
xmlns:psmi="http://www.CraneSoftwrights.com/resources/psmi"
xmlns:exsl="http://exslt.org/common">
<xsl:template match='NewDataSet'>
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page">
<fo:region-body margin="1in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<xsl:for-each select="*">
<xsl:variable name="tempdept">
<xsl:value-of select="Department" />
</xsl:variable>
<xsl:variable name="dept">
<xsl:value-of select="preceding-sibling::DefaultView[1]/Department" />
</xsl:variable>
<xsl:if test="$dept != $tempdept" >
<xsl:call-template name="header"/>
</xsl:if>
<fo:table-and-caption>
<fo:table rx:table-omit-initial-header="true">
<fo:table-column column-width="25mm"/>
<fo:table-column column-width="25mm"/>
<fo:table-header keep-together="always">
<fo:block text-align="center" font-style="italic" margin="5pt" keep-together="always">
<xsl:text>Table (Cont.)</xsl:text>
</fo:block>
</fo:table-header>
<fo:table-header >
<fo:table-row>
<fo:table-cell border-color="black" border-style="solid" width = "85pt" border-width="0.4pt" padding="3pt" align="left">
<fo:block font-weight="bold">Dept</fo:block>
</fo:table-cell >
<fo:table-cell border-color="black" border-style="solid" width = "85pt" border-width="0.4pt" padding="3pt" align="left">
<fo:block font-weight="bold">Title</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<fo:table-row>
<fo:table-cell border-color="black" border-style="solid" width = "85pt" border-width="0.4pt" padding="3pt" align="left">
<fo:block>
<xsl:value-of select="Department"/>
</fo:block>
</fo:table-cell>
<fo:table-cell border-color="black" border-style="solid" width = "85pt" border-width="0.4pt" padding="3pt" align="left">
<fo:block>
<xsl:value-of select="Title"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:table-and-caption>
</xsl:for-each>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template name='header'>
<fo:table>
<fo:table-column column-width="25mm"/>
<fo:table-column column-width="25mm"/>
<fo:table-header keep-together="always">
<fo:block text-align="center" font-style="italic" margin="5pt" keep-together="always">
<xsl:text>Table</xsl:text>
</fo:block>
</fo:table-header>
<fo:table-header >
<fo:table-row>
<fo:table-cell border-color="black" border-style="solid" width = "85pt" border-width="0.4pt" padding="3pt" align="left">
<fo:block font-weight="bold">Dept</fo:block>
</fo:table-cell >
<fo:table-cell border-color="black" border-style="solid" width = "85pt" border-width="0.4pt" padding="3pt" align="left">
<fo:block font-weight="bold">Title</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
</fo:table>
</xsl:template>
</xsl:stylesheet>
示例 O/P 屏幕截图: 1. 多表: Table header with multiple table 2.如果表格内容延伸到下一页,标题不会出现: Header is not coming if table content extends to next page
【问题讨论】:
-
由于您的模板在模板 NewDataSet 上有一个 for-each for * - 这是创建一个包含一行的表(以及两个标题,这也是错误的)。所以每个 DefaultView 一个表。我认为您需要检查您想要的内容——可能为每个 DefaultView 创建一个包含一行的表,而不是为每个 DefaultView 创建一个表。这就是为什么你没有标题(结构也错误),因为它永远不会在表格内中断,它们是单独的表格
标签: xslt xslt-1.0 xslt-2.0 xsl-fo