Это простой пример того, как получить желаемый результат в конце обработки всего остального :
<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:"
является последним выводом. производится преобразованием.