Perhaps this existing XSLT would be of use -
https://github.com/digital-preservation/csv-tools
On Thu, 14 Feb 2019 at 06:53, Rahul Singh rahulsinghindia15@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> 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" xmlns:xs="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.
> XSL-List info and archive
> EasyUnsubscribe (by email)
--
Adam Retter
skype: adam.retter
tweet: adamretter
http://www.adamretter.org.uk
|