xml на входе:
<root>
<child>
<name>Jon</name>
<age>10</age>
</child>
<child>
<name>Bob</name>
<age>10</age>
</child>
<child>
<name>Michael</name>
<age>10</age>
</child>
</root>
xslt-трансформация:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head></head>
<body>
<xsl:apply-templates select="//child">
</xsl:apply-templates></body>
</html>
</xsl:template>
<xsl:template match="child">
<xsl:value-of select="./name">
<xsl:call-template name="dots">
<xsl:with-param name="count" select="80 - string-length(./name) - string-length(./age)">
</xsl:with-param></xsl:call-template>
<xsl:value-of select="./age">
</xsl:value-of></xsl:value-of></xsl:template>
<xsl:template name="dots">
<xsl:param name="count" select="1">
<xsl:if test="$count > 0">
<xsl:text>_</xsl:text>
<xsl:call-template name="dots">
<xsl:with-param name="count" select="$count - 1">
</xsl:with-param></xsl:call-template>
</xsl:if>
</xsl:param></xsl:template>
</xsl:stylesheet>