You haven't actually produced a sample input that produces either output above, but assuming the following input:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<MR23030B>
<Header RECORD_TYPE="HD" METER_NO="10800" FILE_DATE="23/06/2011" RUN_NUMBER="000909"/>
<SenderAddress RECORD_TYPE="AS" COUNTRY_CODE="GB" BRANCH_PREFIX="" BRANCH_CODE=""/>
<Consignment RECORD_TYPE="CO" ACNT_NO="044375530" CONT_NO="9360964" COLL_PT="0001"/>
<DeliveryAddress RECORD_TYPE="AD" COUNTRY_CODE="GB" BRANCH_PREFIX="07" BRANCH_CODE="7255"/>
<Parcel RECORD_TYPE="PA" MANIFEST_NO="0000000000" PARCEL_NO="JD0002210800004322"/>
<Consignment RECORD_TYPE="CO" ACNT_NO="044375531" CONT_NO="9360964" COLL_PT="0001"/>
<DeliveryAddress RECORD_TYPE="AD" COUNTRY_CODE="GB" BRANCH_PREFIX="07" BRANCH_CODE="7256"/>
<Parcel RECORD_TYPE="PA" MANIFEST_NO="0000000000" PARCEL_NO="JD0002210800004323"/>
<Consignment RECORD_TYPE="CO" ACNT_NO="044375532" CONT_NO="9360964" COLL_PT="0001"/>
<DeliveryAddress RECORD_TYPE="AD" COUNTRY_CODE="GB" BRANCH_PREFIX="07" BRANCH_CODE="7257"/>
<Parcel RECORD_TYPE="PA" MANIFEST_NO="0000000000" PARCEL_NO="JD0002210800004324"/>
<Consignment RECORD_TYPE="CO" ACNT_NO="044375532" CONT_NO="9360964" COLL_PT="0001"/>
<DeliveryAddress RECORD_TYPE="AD" COUNTRY_CODE="GB" BRANCH_PREFIX="07" BRANCH_CODE="7257"/>
<Parcel RECORD_TYPE="PA" MANIFEST_NO="0000000000" PARCEL_NO="JD0002210800004325"/>
<TrailerRecord RECORD_TYPE="TR" NO_RECORDS="00000425"/>
</MR23030B>
This XSLT stylesheet produces the output required. The key is if you only want each consignment to appear once you must group on it first, then pull out the parcels with matching consignment values.
Code:
<xsl:template match="MR23030B">
<xsl:for-each-group select="Consignment" group-by="@ACNT_NO">
<xsl:for-each select="../Parcel[preceding-sibling::Consignment[1][@ACNT_NO = current()/@ACNT_NO]]">
<xsl:value-of select="@PARCEL_NO"/>
<xsl:text>
</xsl:text>
</xsl:for-each>
<xsl:value-of select="following-sibling::DeliveryAddress[1]/@BRANCH_CODE"/>
<xsl:text>
</xsl:text>
<xsl:value-of select="@ACNT_NO"/>
<xsl:text>
</xsl:text>
</xsl:for-each-group>
</xsl:template>