所有页面结束后打印内容

时间:2012-01-12 13:46:35

标签: css xslt

我在运行时使用XSL生成html。我的任务是在打印完所有数据后打印签名部分。我正在打印这样的数据:
客户1数据
客户2数据
客户3数据
客户4数据
客户5数据
所有者的签名 每个客户数据都有ID,名称,地址等,每位客户最多5个详细信息 在所有客户数据的最后,我需要打印所有者的签名部分 现在客户数据运行到3页,而所有者部分仅在第一页打印。但我需要在3页末尾签名。

1 个答案:

答案 0 :(得分:1)

这是一个简单的例子,说明如何在处理其他所有内容时产生一些想要的输出

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
     <xsl:apply-templates/>

     Signature:
 </xsl:template>

 <xsl:template match="customer">
  Customer <xsl:value-of select="position()"/> data
 </xsl:template>
</xsl:stylesheet>

将此转换应用于以下XML文档

<t>
 <customer/>
 <customer/>
 <customer/>
 <customer/>
 <customer/>
</t>

生成了想要的结果

  Customer 1 data

  Customer 2 data

  Customer 3 data

  Customer 4 data

  Customer 5 data


     Signature:

<强>解释

在此模板中捕获所有处理(忽略非元素顶部节点(可以安全地假设不存在此类)):

 <xsl:template match="/*">
     <xsl:apply-templates/>

     Signature:
 </xsl:template>

因为字符串"Signature:"在物理上是模板中的最后一个,并且因为XML文档只有一个顶部元素节点,并且该模板只选择一次,所以这保证了字符串"Signature:"是转换产生的最后一个输出。