<?xml version='1.0'?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <Data> <Cases> <Case> <xsl:apply-templates select="Data/Lead[not(DefendantNumber = preceding-sibling::Lead/DefendantNumber)]" mode="Defendant"/> </Case> </Cases> <Counts> <xsl:apply-templates select="Data/Lead/CountSequenceNo"/> </Counts> </Data> </xsl:template> <xsl:template match="Lead" mode="Defendant"> <DefendantNumber><xsl:value-of select="DefendantNumber"/></DefendantNumber> <FirstName><xsl:value-of select="FirstName"/></FirstName> </xsl:template> <xsl:template match="CountSequenceNo"> <Count> <DefendantNumber> <xsl:value-of select="../../Lead/DefendantNumber"/> </DefendantNumber> <CountSequenceNo><xsl:value-of select="."/></CountSequenceNo> <Offense><xsl:apply-templates select="../Offense"/></Offense> </Count> </xsl:template> </xsl:stylesheet>produces this XML output from Kevin's original XML structure:
<?xml version="1.0"?> <Data> <Cases> <Case> <DefendantNumber>09999999CF10A</DefendantNumber> <FirstName>GEORGE</FirstName> </Case> </Cases> <Counts> <Count> <DefendantNumber>09999999CF10A</DefendantNumber> <CountSequenceNo>001</CountSequenceNo> <Offense>SELL/MAN/DEL POSS/W/INT C</Offense> </Count> <Count> <DefendantNumber>09999999CF10A</DefendantNumber> <CountSequenceNo>002</CountSequenceNo> <Offense>POSSESSION OF COCAINE</Offense> </Count> </Counts> </Data>Is this the output you were looking for?