|
next
|
 Subject: How to group when source has multiple transactions Author: Venu I Date: 09 Sep 2011 06:07 PM
|
Thanks a lot. It's working for header.
Now I am trying to concate same thing at line item level. but it is not concat the text correctly.
Source payload
__________________
<?xml version="1.0" encoding="UTF-8"?>
<LIST>
<LIST_ST>
<BEG>
<PONumber>4501012345</PONumber>
</BEG>
<REF>
<Qualifier>AB</Qualifier>
<Code>A1</Code>
<Text>TEST</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>PO Numbber1 -TEST</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>PO Numbber1 -TEST1</Text>
</REF>
<LINEITEM>
<ITEMNUMBER>10</ITEMNUMBER>
<REF>
<Qualifier>AB</Qualifier>
<Code>A1</Code>
<Text>TEST</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>FIRST LINE ITEM -PO Numbber1 -TEST</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>FIRST LINE ITEM -PO Numbber1 -TEST</Text>
</REF>
</LINEITEM>
<LINEITEM>
<ITEMNUMBER>20</ITEMNUMBER>
<REF>
<Qualifier>AB</Qualifier>
<Code>A1</Code>
<Text>TEST</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>sECOND LINE ITEM -PO Numbber1 -TEST</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>Second LINE ITEM -PO Numbber1 -TEST</Text>
</REF>
</LINEITEM>
</LIST_ST>
<LIST_ST>
<BEG>
<PONumber>4501012346</PONumber>
</BEG>
<REF>
<Qualifier>AB</Qualifier>
<Code>A1</Code>
<Text>TEST2</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>PO Numbber2 -TEST1</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>PO Numbber2 -TEST1</Text>
</REF>
<LINEITEM>
<ITEMNUMBER>10</ITEMNUMBER>
<REF>
<Qualifier>AB</Qualifier>
<Code>A1</Code>
<Text>TEST</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>FIRST LINE ITEM -PO Numbber2 -TEST</Text>
</REF>
<REF>
<Qualifier>L1</Qualifier>
<Code>C1</Code>
<Text>FIRST LINE ITEM -PO Numbber2 -TEST</Text>
</REF>
</LINEITEM>
</LIST_ST>
</LIST>
xsl code -
__________
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:key name="Qualifier" match="LIST/LIST_ST/REF" use="concat(count(../following-sibling::LIST_ST), Qualifier)" />
<xsl:key name="LI-Qualifier" match="LIST/LIST_ST/LINEITEM/REF" use="concat(count(../following-sibling::LINEITEM/REF), Qualifier)" />
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>850</TITLE>
</HEAD>
<xsl:for-each select="LIST/LIST_ST">
<BODY>
<H3>Purchase Order Details</H3>
<H2>
<xsl:value-of select="concat('Purchase Order ', position(), '-', BEG/PONumber)" />
</H2>
<table border="2" cellpadding="3" rules="all" bgcolor="#D8C454">
<TH>Qualifier</TH>
<TH>Code</TH>
<TH>Text</TH>
<xsl:for-each select="REF[generate-id(.) = generate-id( key('Qualifier', concat(count(../following-sibling::LIST_ST), Qualifier))[1]) ]">
<TR>
<TD>
<xsl:value-of select="Qualifier" />
</TD>
<TD>
<xsl:value-of select="Code" />
</TD>
<TD>
<xsl:variable name="group" select="key('Qualifier', concat(count(../following-sibling::LIST_ST), Qualifier))" />
<xsl:variable name="v1">
<xsl:for-each select="$group/Text">
<xsl:value-of select="." />
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$v1" />
</TD>
</TR>
</xsl:for-each>
</table>
<xsl:for-each select="LINEITEM">
<xsl:variable name="ItemNumber1" select="ITEMNUMBER" />
<table border="2" cellpadding="3" rules="all" bgcolor="#D8C454">
<TH>Item number</TH>
<TH>Qualifier</TH>
<TH>Code</TH>
<TH>LINEITEM TEXT</TH>
<xsl:for-each select="REF[generate-id(.) = generate-id( key('LI-Qualifier', concat(count(../following-sibling::LINEITEM/REF), Qualifier))[1]) ]">
<TR>
<TD>
<xsl:value-of select="$ItemNumber1" />
</TD>
<TD>
<xsl:value-of select="Qualifier" />
</TD>
<TD>
<xsl:value-of select="Code" />
</TD>
<TD>
<xsl:variable name="group" select="key('LI-Qualifier', concat(count(../following-sibling::LINEITEM/REF), Qualifier))" />
<xsl:variable name="v1">
<xsl:for-each select="$group/Text">
<xsl:value-of select="." />
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="$v1" />
</TD>
</TR>
</xsl:for-each>
</table>
</xsl:for-each>
</BODY>
</xsl:for-each>
</HTML>
</xsl:template>
</xsl:stylesheet>
outout-
_______
Purchase Order Details
Purchase Order 1-4501012345
Qualifier Code Text
AB A1 TEST
L1 C1 PO Numbber1 -TESTPO Numbber1 -TEST1
Item number Qualifier Code LINEITEM TEXT
10 AB A1 TEST
10 L1 C1 FIRST LINE ITEM -PO Numbber1 -TESTFIRST LINE ITEM -PO Numbber1 -TEST
Item number Qualifier Code LINEITEM TEXT
20 AB A1 TESTTEST
20 L1 C1 sECOND LINE ITEM -PO Numbber1 -TESTSecond LINE ITEM -PO Numbber1 -TESTFIRST LINE ITEM -PO Numbber2 -TESTFIRST LINE ITEM -PO Numbber2 -TEST
Purchase Order Details
Purchase Order 2-4501012346
Qualifier Code Text
AB A1 TEST2
L1 C1 PO Numbber2 -TEST1PO Numbber2 -TEST1
Item number Qualifier Code LINEITEM TEXT
Issue - second line item texts are concatenated the first PO second line item level.
Once again thank you so much for your help.
Regards,
Venu.
sourcepayload.xml Line item text
sourcepayload(1).xml Source payload
|
|
|
|