如何在我的页面的打印版本的每个页面上放置表头(使用xsl)?

时间:2009-11-11 12:41:38

标签: xml printing xslt xsl-fo

我有一个巨大的xml文件。它正在被xsl转换为html表。在浏览器中,它是一个带有垂直滚动条的单页。

但是当我想要打印文档时,我可以看到大约10页。我想为每个打印页面添加表格标题。

示例xml:

<page>
   <document>
      <id>100</id>
      <name>SomeName</name>
      <date>02.02.2009</date>
   </document>
   ...
</page>

xsl for it:

<?xml version='1.0'?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/page">
   <table border="1">
      <tr>
         <th>Id</th><th>Name</th><th>Date</th>  <!-- I want to see this on every page -->
      </tr>
      <xsl:apply-templates/>
   </table>
</xsl:template>

<xsl:template match="document">
   <tr>
      <td>
         <xsl:value-of select="id"/>
      </td>
      <td>
         <xsl:value-of select="name"/>
      </td>
      <td>
         <xsl:value-of select="date"/>
      </td>
   </tr>
</xsl:template>
</xsl:stylesheet> 

我正在考虑将XSL-FO作为在每个页面上打印标题的工具,但据我所知,浏览器不支持它,我们需要一些特殊的软件来处理XSL-FO文档。

那么,将标题添加到网页的打印版本的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

您不希望为浏览器预分页您的内容,因为您将不可避免地得到的打印机的打印尺寸与您预期的略有不同,然后它看起来会很糟糕。您绝对的最佳选择是提供内容的PDF,指明如何打印,但这与您正在做的不相符。

不幸的是,当您在呈现为HTML的打印页面上请求时,没有任何标准化方法来提供分页标题。

答案 1 :(得分:0)

您可以使用<thead>部分和CSS的组合来完成此操作。您错过了<thead>部分。看看这个link