ashushujev(_at_)pixelimp(_dot_)com wrote:
<xsl:template match="/">
<xsl:apply-templates select="//Account[1]/descendant::*" />
You should process each Account separately, in order to get
each on a separate line.
Note that the "//" starting the XPath expression unnecessarily
walks the whole tree, slowing down processing.
<xsl:template match="*">
<xsl:if test = "normalize-space(text())!=''" >
<xsl:value-of select = "." />
<xsl:if test = "not(position()=last())" >
<xsl:text > ,</xsl:text>
</xsl:if>
</xsl:if>
</xsl:template>
I suspect this template works by accident only...
Try something like
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text"/>
<xsl:template match="Account">
<!-- select leaf nodes -->
<xsl:apply-templates select="descendant::*[not(*)]"/>
<!-- one way to produce a line feed -->
<xsl:text>
</text>
</xsl:template>
<xsl:template match="*">
<xsl:value-of select = "." />
<xsl:if test = "not(position()=last())" >
<xsl:text > ,</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
Beware, untested.
J.Pietschmann