xsl-list
[Top] [All Lists]

Re: XML To CSV

2004-08-04 12:54:50
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>&#x0A</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


<Prev in Thread] Current Thread [Next in Thread>
  • XML To CSV, ashushujev
    • Re: XML To CSV, J.Pietschmann <=