xml - XSLT template match for CSV transform -
xml - XSLT template match for CSV transform -
i'm using next xsl transform xml csv, based on before query.
xml:
<rows> <row> <loannumber>123456</loannumber> <datereceived>2015-04-10</datereceived> <dateclosed>2015-04-10</dateclosed> </row> <row> <loannumber>9988776</loannumber> <datereceived>2015-04-10</datereceived> <dateclosed/> </row> </rows>
xsl:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="text" encoding="iso-8859-1"/> <xsl:strip-space elements="*" /> <xsl:template match="/*/child::*"> <xsl:for-each select="child::*"> <xsl:if test="position() = 1"><xsl:value-of select="normalize-space(.)"/>,open,</xsl:if> <xsl:if test="position() != 1 , position() != last()"><xsl:value-of select="normalize-space(.)"/>,</xsl:if> <xsl:if test="position() = last()"><xsl:value-of select="normalize-space(.)"/><xsl:text>
</xsl:text> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>
i'd able output next csv above rows
123456, closed, 2015-04-10, 2015-04-10 9988776, open, 2015-04-10,
i'd assumed accomplish having 2 templates, 1 outputting text open, <dateclosed>
element null , 1 outputting text closed not.
however don't understand template match that's been used plenty able figure out how this. requirement met in 1 template even?
your output not match input. assuming want result show loannumber, status, datereceived, dateclosed suggest seek way:
xslt 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="text" encoding="iso-8859-1"/> <xsl:template match="/rows"> <xsl:for-each select="row"> <xsl:value-of select="loannumber"/> <xsl:text>,</xsl:text> <xsl:choose> <xsl:when test="string(dateclosed)">closed,</xsl:when> <xsl:otherwise>open,</xsl:otherwise> </xsl:choose> <xsl:value-of select="datereceived"/> <xsl:text>,</xsl:text> <xsl:value-of select="dateclosed"/> <xsl:text> </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>
xml csv xslt
Comments
Post a Comment