XML Editor
Sign up for a WebBoard account Sign Up Keyword Search Search More Options... Options
Chat Rooms Chat Help Help News News Log in to WebBoard Log in Not Logged in
Show tree view Topic
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Postnext
Venu ISubject: How to group when source has multiple transactions
Author: Venu I
Date: 09 Sep 2011 10:08 AM
Originally Posted: 09 Sep 2011 10:03 AM
Hi,

My source has multiple PO's information, for each Purchase order details I am display in an one HTML page with table format and I want to cocatenate the texts when ever qualifier's same for that particular PO's text.(REFSegments)

Here my source has two PO information. and I am trying to concat the REF nodes when qualifier is same. (my case different qualifier will repeat..when repeated need to concate the text..now L1 is repeating I may get some other qualifiers..same way)...Pls help me.

Source xml -

<?xml version="1.0" encoding="UTF-8"?>
<LIST>
<!-- PO number 1 details-->
<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>
</LIST_ST>

<!-- PO number 2 details-->
<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>
</LIST_ST>

</LIST>

xslt 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="Qualifier" />

<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>850</TITLE>
</HEAD>

<xsl:for-each select="LIST/LIST_ST">
<BODY>
<H3>Purchase Order Details</H3>

<H2>Purchase Order
<xsl:value-of select="position()" />

-
<xsl:value-of select="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', 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', 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>
</BODY>
</xsl:for-each>
</HTML>
</xsl:template>
</xsl:stylesheet>


output
______

Second PO details are not showing both REF segment texts are concatenated first PO qualifier level. How do I concatenate when the qualifier is same ?

Purchase Order Details
Purchase Order 1 - 4501012345
Qualifier Code Text
AB A1 TEST TEST2
L1 C1 PO Numbber1 -TESTPO Numbber1 -TEST1PO Numbber2 -TEST1PO Numbber2 -TEST1

Purchase Order Details
Purchase Order 2 - 4501012346
Qualifier Code Text


(Purchase order 2 doesn't contain any text both are PO number1)


DocumentPOOutput(1).docx
xsl output html page

UnknownPOOutput.docx
xsl output html page

Postnext
Ivan PedruzziSubject: How to group when source has multiple transactions
Author: Ivan Pedruzzi
Date: 09 Sep 2011 03:25 PM

You need to change your strategy taking into account duplicates only inside a LIST_ST element and not in the entire document.

The attached solution builds a key using the number of sibling that follows the current LIST_ST as index.


Hope this helps
Ivan Pedruzzi
Stylus Studio Team


DocumenttoHTML.xsl

Postnext
Venu ISubject: 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.


Documentsourcepayload.xml
Line item text

Unknownsourcepayload(1).xml
Source payload

Postnext
Venu ISubject: How to group when source has multiple transactions
Author: Venu I
Date: 09 Sep 2011 06:11 PM
attaching the xsl code


Documentxslcode.xml
xsl code with header and line item - con

Postnext
Ivan PedruzziSubject: How to group when source has multiple transactions
Author: Ivan Pedruzzi
Date: 09 Sep 2011 06:17 PM

Venu, which Stylus Studio version are you running?

Ivan Pedruzzi
Stylus Studio Team

Postnext
Venu ISubject: How to group when source has multiple transactions
Author: Venu I
Date: 09 Sep 2011 08:06 PM
Ivan,

I am using free cooktop software presently to complete my test case but later I am going to use the Stulus studio only.
Pls correct me what I am missing in my code to concate the line item texts.

Regards,
Venu.

Postnext
Venu ISubject: How to group when source has multiple transactions
Author: Venu I
Date: 12 Sep 2011 01:44 PM
Ivan,

Same thing I am trying for line item but it is not concatnating correctly at line item level, can you pls check my latest code attached in the update post.

Regards,
Venu.

Postnext
Ivan PedruzziSubject: How to group when source has multiple transactions
Author: Ivan Pedruzzi
Date: 12 Sep 2011 03:00 PM
Venu,

The Stylus Studio Developer Network supports Stylus Studio users exclusively.

Ivan Pedruzzi
Stylus Studio Team

Postnext
Venu ISubject: How to group when source has multiple transactions
Author: Venu I
Date: 12 Sep 2011 03:23 PM
Thanks for your suggestion Iven. Our client is using licenced Styllus studio - 2007 xml Enterprice suite and I tested same code and I am getting same issue. Right now I am using 2007 xml Enterprice suite.

Pls advice.

Regards,
Venu.

Postnext
Venu ISubject: How to group when source has multiple transactions
Author: Venu I
Date: 12 Sep 2011 05:35 PM
Ivan,

We are using licenced Stylus studio 2007 Enterprice suite. Pls let me know incase if you would need any other info.

Regards,
Venu.

Posttop
Ivan PedruzziSubject: How to group when source has multiple transactions
Author: Ivan Pedruzzi
Date: 13 Sep 2011 01:40 AM

See attached solution,

Ivan Pedruzzi
Stylus Studio Team


Documentxslcode.xsl

 
Topic Page 1 2 3 4 5 6 7 8 9 Go to previous topicPrev TopicGo to next topicNext Topic
Download A Free Trial of Stylus Studio 6 XML Professional Edition Today! Powered by Stylus Studio, the world's leading XML IDE for XML, XSLT, XQuery, XML Schema, DTD, XPath, WSDL, XHTML, SQL/XML, and XML Mapping!  
go

Log In Options

Site Map | Privacy Policy | Terms of Use | Trademarks
Stylus Scoop XML Newsletter:
W3C Member
Stylus Studio® and DataDirect XQuery ™are from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2016 All Rights Reserved.