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