[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xsl-list
Subject:    Re: [xsl] XSL for CSV to XML
From:       "G. Ken Holman g.ken.holman () gmail ! com" <xsl-list-service () lists ! mulberrytech ! com>
Date:       2019-02-14 13:07:49
Message-ID: 20190214080712.84045 () lists ! mulberrytech ! com
[Download RAW message or body]

You may find the code I used in these stylesheets to be helpful:

https://cranesoftwrights.github.io/resources/#csv

. . . . . Ken

At 2019-02-14 05:53 +0000, Rahul Singh rahulsinghindia15@gmail.com wrote:
> Hi,
> 
> I wrote XSL for CSV to XML conversion but i am 
> not getting proper output for #Id 3. and Also I 
> need output as per given expected output. Need 
> yours help please for given Input CSV, XSL Code, 
> Current Output, Expected Output:
> 
> Input CSV:
> 
> <root>ID|Value|Number|descr1|descr2|descr3|descr4
> 1|AAAAA|1|aaaaaaaaaaa|aaaaaaaaaaa|aaaaaaaaaaa|aaaaaaaaaaa
> 2|AAAAA|2|aaaaaaaaaaa|aaaaaaaaaa|aaaaaaaa|aaaaaaaaaaaa
> 3|AAAAA|3|aaaaaaaaaaa
> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|aaaaaaaaaaa|aaaaaaaaaaa|aaaaaaaaaaa</root>
>  
> XSL Code:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="2.0" 
> xmlns:xsl="<http://www.w3.org/1999/XSL/Transform>http://www.w3.org/1999/XSL/Transform" \
>  xmlns:xs="<http://www.w3.org/2001/XMLSchema>http://www.w3.org/2001/XMLSchema" 
> exclude-result-prefixes="xs">
> <xsl:output method="xml" indent="yes" encoding="UTF-8"/>
> <xsl:template match="/">
> <root>
> <xsl:call-template name="texttorows">
> <xsl:with-param name="StringToTransform" select="root"/>
> </xsl:call-template>
> </root>
> </xsl:template>
> <xsl:template name="texttorows">
> <xsl:param name="StringToTransform" select="''"/>
> <xsl:choose>
> <xsl:when test="contains($StringToTransform,'&#xA;')">
> <row>
> <xsl:call-template name="csvtoxml">
> <xsl:with-param name="StringToTransform" 
> select="substring-before($StringToTransform,'&#xA;')"/>
> </xsl:call-template>
> </row>
> <xsl:call-template name="texttorows">
> <xsl:with-param name="StringToTransform">
> <xsl:value-of select="substring-after($StringToTransform,'&#xA;')"/>
> </xsl:with-param>
> </xsl:call-template>
> </xsl:when>
> <xsl:otherwise>
> <row>
> <xsl:call-template name="csvtoxml">
> <xsl:with-param name="StringToTransform" select="$StringToTransform"/>
> </xsl:call-template>
> </row>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
> <xsl:template name="csvtoxml">
> <xsl:param name="StringToTransform" select="''"/>
> <xsl:choose>
> <xsl:when test="contains($StringToTransform,'|')">
> <elem>
> <xsl:value-of select="substring-before($StringToTransform,'|')"/>
> </descr1>
> <xsl:call-template name="csvtoxml">
> <xsl:with-param name="StringToTransform">
> <xsl:value-of select="substring-after($StringToTransform,'|')"/>
> </xsl:with-param>
> </xsl:call-template>
> </xsl:when>
> <xsl:otherwise>
> <elem>
> <xsl:value-of select="$StringToTransform"/>
> </descr1>
> </xsl:otherwise>
> </xsl:choose>
> </xsl:template>
> </xsl:stylesheet>
> 
> Current  Output:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <root>
> <row>
> <elem>ID</descr1>
> <elem>Value</descr1>
> <elem>Number</descr1>
> <elem>descr1</descr1>
> <elem>descr2</descr1>
> <elem>descr3</descr1>
> <elem>descr4</descr1>
> </row>
> <row>
> <elem>1</descr1>
> <elem>AAAAA</descr1>
> <elem>1</descr1>
> <elem>aaaaaaaaaaa</descr1>
> <elem>aaaaaaaaaaa</descr1>
> <elem>aaaaaaaaaaa</descr1>
> <elem>aaaaaaaaaaa</descr1>
> </row>
> <row>
> <elem>2</descr1>
> <elem>AAAAA</descr1>
> <elem>2</descr1>
> <elem>aaaaaaaaaaa</descr1>
> <elem>aaaaaaaaaa</descr1>
> <elem>aaaaaaaa</descr1>
> <elem>aaaaaaaaaaaa</descr1>
> </row>
> <row>
> <elem>3</descr1>
> <elem>AAAAA</descr1>
> <elem>3</descr1>
> <elem>aaaaaaaaaaa</descr1>
> </row>
> <row>
> 
> <elem>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</descr1>
> <elem>aaaaaaaaaaa</descr1>
> <elem>aaaaaaaaaaa</descr1>
> <elem>aaaaaaaaaaa</descr1>
> </row>
> </root>
> 
> Expected Output:
> 
> <?xml version="1.0" encoding="UTF-8"?>
> <root>
> <row>
> <ID>1</ID>
> <Value>AAAAA</Value>
> <Number>1</Number>
> <descr1>aaaaaaaaaaa</descr1>
> <descr2>aaaaaaaaaaa</descr3>
> <descr3>aaaaaaaaaaa</descr3>
> <descr4>aaaaaaaaaaa</descr4>
> </row>
> <row>
> <ID>2</ID>
> <Value>AAAAA</Value>
> <Number>2</Number>
> <descr1>aaaaaaaaaaa</descr1>
> <descr2>aaaaaaaaaa</descr2>
> <descr3>aaaaaaaa</descr3>
> <descr4>aaaaaaaaaaaa</descr4>
> </row>
> <row>
> <Id>3</Id>
> <Value>AAAAA</Value>
> <Number>3</Number>
> 
> <descr1>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</descr1>
>  <descr2>aaaaaaaaaaa</descr2>
> <descr3>aaaaaaaaaaa</descr3>
> <descr4>aaaaaaaaaaa</descr4>
> </row>
> </root>
> 
> 
> Thanks,
> Rahul.
> <http://www.mulberrytech.com/xsl/xsl-list>XSL-List info and archive
> <http://lists.mulberrytech.com/unsub/xsl-list/96802>EasyUnsubscribe 
> (<>by email)


--
Contact info, blog, articles, etc. http://www.CraneSoftwrights.com/s/ |
Check our site for free XML, XSLT, XSL-FO and UBL developer resources |
Streaming hands-on XSLT/XPath 2 training class @ US$45 (5 hours free) |
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/651070
or by email: xsl-list-unsub@lists.mulberrytech.com
--~--


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic