I'm using xslt to transform an xml into a pipe delimited file, xslt version 1.0. One person can have many classes. I'm struggling to figure out how to create a new row in batches of 5 classes in version 1.0?
Example code snippet
<root>
<Person>
<Name>Doug</Name>
<Class>
<ClassID>AS</ClassID>
</Class>
<Class>
<ClassID>BA</ClassID>
</Class>
<Class>
<ClassID>ZX</ClassID>
</Class>
<Class>
<ClassID>MSN</ClassID>
</Class>
<Class>
<ClassID>ABSN</ClassID>
</Class>
<Class>
<ClassID>FS</ClassID>
</Class>
</Person>
<Person>
<Name>Amy</Name>
<Class>
<ClassID>AS</ClassID>
</Class>
<Class>
<ClassID>BA</ClassID>
</Class>
</Person>
<Person>
<Name>Charlotte</Name>
<Class>
<ClassID>BA</ClassID>
</Class>
</Person>
<Person>
<Name>Betty</Name>
<Class>
<ClassID>ZX</ClassID>
</Class>
</Person>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:variable name="linefeed" select="'
'"/>
<xsl:template match="/">
<File>
<Body>
<xsl:apply-templates select="root/Person"/>
</Body>
</File>
</xsl:template>
<xsl:template match="root/Person">
<xsl:value-of select="Name"/>
<xsl:for-each select="Class">
<xsl:text>|</xsl:text>
<xsl:value-of select="ClassID" />
</xsl:for-each>
<xsl:value-of select="$linefeed"/>
</xsl:template>
</xsl:stylesheet>
Instead of this
Doug|AS|BA|ZX|MSN|ABSN|FS
Amy|AS|BA
Charlotte|BA
Betty|ZX
I need this- where Doug now has two rows because he has more than 5 classes (only 5 classes can fit on a line). This needs to be dynamic, there could be 100 classes.
Doug|AS|BA|ZX|MSN|ABSN
Doug|FS
Amy|AS|BA
Charlotte|BA
Betty|ZX
I've been going in circles- Help please!