将XSLT格式化为A4页面大小以通过浏览器进行打印

时间:2014-03-28 04:12:58

标签: html xml xslt

我正在尝试做一些可能非常简单的事情,但我只是不明白为什么它不能从我读过的内容中发挥作用。

示例XML:

<example>
    <item>
        <name>something1</name>
        <qty>1</qty>
    </item>
    <item>
        <name>something2</name>
        <qty>1</qty>
    </item>
    <item>
        <name>something3</name>
        <qty>2</qty>
    </item>
</report>

示例XSLT:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes" />

<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

<fo:layout-master-set>
    <fo:simple-page-master master-name="A4" page-height="297mm" page-width="210mm">
        <fo:region-body margin-top="20mm" margin-bottom="20mm"/>
        <fo:region-before extent="10mm"/>
        <fo:region-after extent="10mm"/>
    </fo:simple-page-master>
</fo:layout-master-set>

<fo:page-sequence master-reference="A4" >
    <fo:flow flow-name="xsl-region-body">
        <xsl:apply-templates select="report/item"/>
    </fo:flow>
</fo:page-sequence>

<fo:page-sequence master-reference="A4" >
    <fo:flow flow-name="xsl-region-before">
        Some head content.
    </fo:flow>
</fo:page-sequence>

<fo:page-sequence master-reference="A4" >
    <fo:flow flow-name="xsl-region-after">
        Some foot content.
    </fo:flow>
</fo:page-sequence>

</fo:root>
</xsl:template>

<xsl:template match="item">
    <fo:block><xsl:value-of select="qty" />, <xsl:value-of select="name" /></fo:block>
</xsl:template>

</xsl:stylesheet>

期望的结果:   我希望能够进行浏览器中出现的转换,但是创建一个总是出现常见页眉和页脚的页面,以及填充页面直到它用完房间的信息,然后用同一个头开始另一个页面和脚信息。   即 - 如果有很多物品,我将每个物品放在一条线上,直到它用完了A4空间,然后继续在另一张A4页面上。   在浏览器中查看页面布局并不重要,但需要在打印中以这种方式查看布局。 我错过了什么吗?还是我走在正确的轨道上?

对于学习XSL-FO的好资料的建议也会受到赞赏,因为大多数我看到的很难遵循这个想法,w3schools做了一个教程,但它描述它是独立的,不需要和XSLT。< / p>

已添加(2014年4月9日) 示例Raw XSL而不是XSL-FO

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" indent="yes" />

<xsl:template match="/">
<h3>Some Form</h3>

<table>
<tr>
<th>SomeName</th>
<th>Qty</th>
</tr>
<xsl:apply-templates select="Report/Item"/>
</table>

<h4>Some footer</h4>

</xsl:template>

<xsl:template match="item">
    <tr>
        <td><xsl:value-of select="name"/></td>
        <td><xsl:value-of select="qty"/></td>
    </tr>
</xsl:template>

</xsl:stylesheet>

0 个答案:

没有答案