2012-01-12 24 views
1

我在运行时使用XSL生成html。我的任务是打印所有数据后打印签名部分。我打印的数据是这样的:
客户1个数据
客户2个数据
客户3个数据
客户4个数据
客户5个数据
业主签名 每个客户的数据有编号,名称,地址等,每个客户最多5个细节。
在所有客户数据的末尾,我需要打印所有者的签名部分。
现在客户数据一直运行到3页,并且所有者部分仅在第一页打印。但我需要在3页结尾处签名。在所有页面结束后打印内容

回答

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:"是转换生成的最后一个输出。

+0

如果你能解释我上面的代码,我会很高兴。 – sgowd 2012-01-12 14:08:03

+0

@ sans481:我更新了我的答案和请求的解释。 – 2012-01-12 14:15:49

+0

如果我必须在最后打印客户2的签名,该怎么办?毕竟客户资料.. – sgowd 2012-01-13 02:53:53