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
tera m.Subject: mapping with XSL
Author: tera m.
Date: 17 Feb 2005 11:25 AM
I have an XML file like the following:

<?xml version="1.0" ?>
<catalog>
<cd>
<payment_id>1</payment_id>
<payment_amount>999</payment_amount>
<tax1_amount>10.90</tax_amount>
</cd>
<cd>
<payment_id>1</payment_id>
<payment_amount>999</payment_amount>
<tax2_amount>8.70</tax_amount>
</cd>
<cd>
<payment_id>2</payment_id>
<payment_amount>750</payment_amount>
<tax1_amount>10.70</tax_amount>
</cd>
<cd>
<payment_id>2</payment_id>
<payment_amount>750</payment_amount>
<tax3_amount>9.90</tax_amount>
</cd>
<cd>
<payment_id>3</payment_id>
<payment_amount>980</payment_amount>
<tax2_amount>11.20</tax_amount>
</cd>
.
.
.
</catalog>

Using XSL, I wanna transform the XML file with special mapping
into a Text File with delimiters, as the following:

(every different Payment should b in a different line.
there r 3 types of taxes for each Payment..)

1,999,10.90,8.70,0
2,270,10.70,0,9.90
3,980,0,11.20,0


The parallel Result XML File could b as the following:
<catalog>
<cd>
<payment_id>1</payment_id>
<payment_amount>999</payment_amount>
<tax1_amount>10.90</tax_amount>
<tax2_amount>8.70</tax_amount>
</cd>
<cd>
<payment_id>2</payment_id>
<payment_amount>750</payment_amount>
<tax1_amount>10.70</tax_amount>
<tax3_amount>9.90</tax_amount>
</cd>
<cd>
<payment_id>3</payment_id>
<payment_amount>980</payment_amount>
<tax2_amount>11.20</tax_amount>
</cd>
.
.
.
</catalog>

Does some1 know how to do it?
Any help about it, even partial help, will b welcome.

Thank u!

Posttop
Ivan PedruzziSubject: mapping with XSL
Author: Ivan Pedruzzi
Date: 17 Feb 2005 12:49 PM
Using key makes things easier.
Hope this helps
Ivan

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" />
<xsl:key name="cd" match="/catalog/cd" use="concat(payment_id, payment_amount)"/>

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="@*|node()">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="cd">
<xsl:variable name="group" select="key('cd', concat(payment_id, payment_amount))"/>

<xsl:if test="generate-id($group[1]) = generate-id(.)">
<xsl:value-of select="concat(payment_id, ',', payment_amount)"/>
<xsl:apply-templates/>
<xsl:for-each select="$group">
<xsl:apply-templates/>
</xsl:for-each>
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:template>

<xsl:template match="tax1_amount|tax2_amount|tax3_amount">
<xsl:value-of select="concat(',', .)"/>
</xsl:template>

</xsl:stylesheet>

 
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.