Как разместить заголовки таблиц на каждой странице в печатной версии моей страницы (используя xsl)?

У меня есть огромный xml-файл. И он преобразуется в html-таблицу с помощью xsl. В браузере это одна страница с вертикальной полосой прокрутки.

Но когда я хочу распечатать документ, я вижу около 10 страниц. Я хочу добавить заголовки таблиц на каждую печатную страницу.

Пример xml:

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

И xsl для него:

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

Итак, как правильно добавить заголовки в печатную версию веб-страницы?


person Roman    schedule 11.11.2009    source источник


Ответы (2)


Вы не хотите предварительно разбивать свой контент на страницы для браузера, потому что вы неизбежно столкнетесь с браузерами, которые печатают немного в другом масштабе, чем вы ожидаете, и тогда это будет выглядеть плохо. Ваш лучший вариант — предоставить PDF-файл с вашим контентом, в котором указано, как он должен быть напечатан, но это не соответствует тому, что вы делаете.

К сожалению, не существует стандартизированного способа предоставления заголовков с разбивкой на страницы по запросу на печатных страницах, отображаемых в формате HTML.

person Paul McMillan    schedule 11.11.2009

Вы можете сделать это, используя комбинацию <thead> разделов и CSS. Вы пропустили раздел <thead>. Перейдите по этой ссылке.

person Chris Gow    schedule 11.11.2009