Один простой способ сделать это - просто перевести результат
<xsl:number/>
в нужный формат.
Это преобразование:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node">
<xsl:variable name="vIndent">
<xsl:number level="multiple" count="node"/>
</xsl:variable>
<xsl:value-of select=
"concat(translate($vIndent,
'1234567890.',
'**********'),
' ',
@TEXT,
'
'
)"/>
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>
при применении к этому документу XML:
<t>
<node TEXT="txt">
<node TEXT="txt">
<node TEXT="txt"/>
<node TEXT="txt"/></node>
<node TEXT="txt"/></node>
<node TEXT="txt"/>
</t>
дает желаемый результат:
* txt
** txt
*** txt
*** txt
** txt
* txt
Обратите внимание на использование функции translate () для удаления любого символа "." символов и для перевода любой цифры в "*".