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
Mike SappSubject: Grouping/Following question
Author: Mike Sapp
Date: 25 Mar 2008 06:37 AM
Originally Posted: 25 Mar 2008 06:32 AM
Hello,

Im having trouble with a grouping XSLT conversion. Below are the input and desired output. If the <A> element contains the term 'Unit', i would like to be able to add the immediately following <row>'s data for the immediately identically named <B> elements as well as the resulting amounts for the <D> elements.

Looking forward to your advice

INPUT File
<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<A>Unit</A>
<B></B>
<D>100</D>
</row>
<row>
<A>Chapter</A>
<B>BobMarley</B>
<D>-10</D>
</row>
<row>
<A>Chapter</A>
<B>BobMarley</B>
<D>-15</D>
</row>
<row>
<A>Chapter</A>
<B>CrazyIvan</B>
<D>100</D>
</row>
<row>
<A>Chapter</A>
<B>JoeSmith</B>
<D>75</D>
</row>
<row>
<A>Unit</A>
<B/>
<D>100</D>
</row>
<row>
<A>Chapter</A>
<B>BobMarley</B>
<D>-10</D>
</row>
<row>
<A>Chapter</A>
<B>BobMarley</B>
<D>-10</D>
</row>
</document>


DESIRED OUTPUT FILE

<?xml version="1.0" encoding="UTF-8"?>
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<A>Chapter</A>
<B>BobMarley</B>
<D>75</D>
</row>
<row>
<A>Chapter</A>
<B>CrazyIvan</B>
<D>100</D>
</row>
<row>
<A>Chapter</A>
<B>JoeSmith</B>
<D>75</D>
</row>
<row>
<A>Chapter</A>
<B>BobMarley</B>
<D>80</D>
</row>
</document>

Postnext
James DurningSubject: Grouping/Following question
Author: James Durning
Date: 26 Mar 2008 12:31 PM
Originally Posted: 26 Mar 2008 12:30 PM
Not sure if this will cover all your cases, but here it is for now:
Please note the placement of parentheses. Adding or removing a pair of parentheses in the wrong place will cause errors.


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="rowByB" match="row" use="concat(generate-id(preceding-sibling::row[A='Unit'][1] ), B)"/>
<xsl:template match="/*">
<xsl:copy>
<xsl:for-each select="row[A != 'Unit'][count(.|key('rowByB', concat(generate-id(preceding-sibling::row[A='Unit'][1]), B))[1] )= 1]">
<xsl:copy>
<xsl:copy-of select="A"/>
<xsl:copy-of select="B"/>
<xsl:variable name="AddSum">
<xsl:value-of select="preceding-sibling::row[A='Unit'][1]/following-sibling::row[1]/B"/>
</xsl:variable>
<D>
<xsl:choose>
<xsl:when test="B = $AddSum">
<!-- add Unit value -->
<xsl:value-of select="sum(key('rowByB', concat(generate-id(preceding-sibling::row[A='Unit'][1]), B))/D) + preceding-sibling::row[A='Unit'][1]/D"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="sum(key('rowByB', concat(generate-id(preceding-sibling::row[A='Unit'][1]), B))/D)"/>
</xsl:otherwise>
</xsl:choose>
</D>
</xsl:copy>
</xsl:for-each>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

Google Muenchian grouping.

Postnext
Mike SappSubject: Grouping/Following question
Author: Mike Sapp
Date: 27 Mar 2008 09:01 AM
Thank you for your help and any spec questions, ill post back. Will run a search aswell-. Thanx once again

Posttop
Mike SappSubject: Grouping/Following question - Muenchian
Author: Mike Sapp
Date: 06 Apr 2008 07:25 PM
Originally Posted: 03 Apr 2008 05:12 AM
Hi James,

I have taken your advice and have gotten to a certain point where i seem to be hitting a wall.

Im attaching a sample of the input file and the XSLT which i have editted so far.

I need the conversion to only sum up the <royalty>, <amount>, <fee> etc elements of the following elements of rows which preceding <type> elements are named RELEASE and have the same <releaseid> and <order> number of the RELEASE rows <order> number. Otherwise i need the data just the way it is displaying a single TRACKS's row. Also, for the row which has been consolidated for a RELEASE, i need its type to be named RELEASE aswell to identify it. Im not sure how to get the when/otherwise coding to do this..


Looking fowrard to your feedback and thank you extremely much for your help,

Mike


UnknownInput(10).xml
Input

UnknownAdditionOfRoyaltiesforReleases.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.