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
V NVSubject: XML to XML using Mapper
Author: V NV
Date: 07 Dec 2005 06:15 AM
Hi,
I have a source and target xml document, and I'm trying to use the XSLT Mapper feature of Stylus Studio to generate a xsl file, I'm not able to.
If someone can help me in generating the xsl file, I would appreciate it.

When I use the mapper, I can see the source document in the Source pane. I'm not able to graphically delete the last 2 <Member> elements.

Regards,
Milind

Source XML:
<?xml version="1.0" encoding="UTF-8"?>
<family>
<dad name="Bob">
<Member childRef="#id1"/>
<Member childRef="#id2"/>
<Member childRef="#id3"/>
</dad>
<Child id="id1" detailRef="#id10"/>
<Child id="id2" detailRef="#id11"/>
<Child id="id3" detailRef="#id12"/>
<Details id="id10" name="tom"/>
<Details id="id11" name="dick"/>
<Details id="id12" name="harry"/>
</family>


Target XML
<?xml version="1.0" encoding="UTF-8"?>
<family>
<dad name="Bob">
<Member childRef="#id1"/>
</dad>
<Child id="id1" detailRef="#id10 #id11 #id12"/>

<Details id="id10" name="tom"/>
<Details id="id11" name="dick"/>
<Details id="id12" name="harry"/>
</family>

Postnext
Minollo I.Subject: XML to XML using Mapper
Author: Minollo I.
Date: 07 Dec 2005 10:18 AM
You can use mapper for most of the operations; but you need some hand coding to flatten the repetitive child references into a concatenated string.

The following can be a starting point:

<?xml version='1.0' ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<family>
<dad>
<xsl:value-of select="family/dad"/>
<xsl:attribute name="name">
<xsl:value-of select="family/dad/@name"/>
</xsl:attribute>
<Member>
<xsl:attribute name="childRef">
<xsl:value-of select="family/dad/Member/@childRef"/>
</xsl:attribute>
</Member>
</dad>
<Child>
<xsl:attribute name="id">
<xsl:value-of select="family/Child/@id"/>
</xsl:attribute>
<xsl:variable name="concatenated">
<xsl:for-each select="family/Child">
<xsl:value-of select="@detailRef"/>
</xsl:for-each>
</xsl:variable>
<xsl:attribute name="detailRef">
<xsl:value-of select="$concatenated"/>
</xsl:attribute>
</Child>
<xsl:for-each select="family/Details">
<Details>
<xsl:attribute name="id">
<xsl:value-of select="@id"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@name"/>
</xsl:attribute>
</Details>
</xsl:for-each>
</family>
</xsl:template>
</xsl:stylesheet>

Postnext
V NVSubject: XML to XML using Mapper
Author: V NV
Date: 08 Dec 2005 02:04 AM
Thanks for the reply. But this works only if the source xml file has only one 'dad' element. My xml file has several 'dad' elements, and I was trying to generalize this zsl by using 'for-each' etc.
I was hoping that the mapper would do this for me. I'm still not sure how to use the mapper?

Regards,

Posttop
Minollo I.Subject: XML to XML using Mapper
Author: Minollo I.
Date: 08 Dec 2005 09:08 AM
You can open the XSLT in mapper, delete one of the links and create it again to make it a "repeatable" link. When drag&dropping one source node to the target, do that using the right button of the mouse, and you'll notice you have quite a few choices to model the mapping.

That way you'll be able to change the handling of the "Dad" element to loop (for-each) on all its occurrences.

Hope this helps,
Minollo

 
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.