[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,'
')">
> <row>
> <xsl:call-template name="csvtoxml">
> <xsl:with-param name="StringToTransform"
> select="substring-before($StringToTransform,'
')"/>
> </xsl:call-template>
> </row>
> <xsl:call-template name="texttorows">
> <xsl:with-param name="StringToTransform">
> <xsl:value-of select="substring-after($StringToTransform,'
')"/>
> </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