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
Robert NordinSubject: XML to XML
Author: Robert Nordin
Date: 18 Nov 2005 06:43 AM
Hello everybody... this is my first post...

i am new to XSL.. and I have a problem that I cannot solve. I have searched and searched for an answer but none targets my problem exactly... or at least I cannot get it to work.

I have the following example XML:

<?xml version="1.0" encoding="UTF-8"?>

<clan>
<family>
<dad>
<name sex="man">Robert</name>
<phone>000 - 000 00 00</phone>
</dad>
<mom>
<name sex="woman">Netan</name>
<phone>111 - 111 11 11</phone>
</mom>
<our_children>

</our_children>
</familj>
<children>
<name>Daniel</name>
<name>Tina</name>
</children>
</clan>

Now... my proble is that I am supposed to transform this into another XML. The new XML should skip the <clan> tag and the <children> tag and move the tags within <children> into the <our_children> tag. I cannot get this to work.

Result should look like this:

<family>
<dad>
<name sex="man">Robert</name>
<phone>000 - 000 00 00</phone>
</dad>
<mom>
<name sex="woman">Netan</name>
<phone>111 - 111 11 11</phone>
</mom>
<our_children>
<name>Daniel</name>
<name>Tina</name>
</our_children>
</familj>

I would be VERY grateful if someone can help me with this problem...

Postnext
(Deleted User) Subject: XML to XML
Author: (Deleted User)
Date: 18 Nov 2005 08:05 AM
Robert, this should do the trick

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- copy almost everythging, unchanged -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>

<!-- this template replaces the empty our_children node
with one full of kids -->
<xsl:template match="our_children">
<our_children>
<!-- have the kids move in with us -->
<xsl:copy-of select="../../children/*"/>
</our_children>
</xsl:template>

<!-- this template prevents the old children from
being copied, ie it deletes the old children nodes -->
<xsl:template match="children"/>

</xsl:stylesheet>

- clyde

Postnext
Robert NordinSubject: XML to XML
Author: Robert Nordin
Date: 21 Nov 2005 02:36 AM
Thank you, this is great!

You dont know how much I have tried to solve this problem... never gotten anywhere but halfway... Your script looks sooooo easy.

Thank you!

Postnext
Robert NordinSubject: XML to XML
Author: Robert Nordin
Date: 21 Nov 2005 02:54 AM
Hmm... come to think of it.. there is still one small problem...

The attributes of mom and dad are not in the result xml...

I will try and find a solution to this...

Postnext
Robert NordinSubject: XML to XML
Author: Robert Nordin
Date: 21 Nov 2005 03:42 AM
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- copy almost everythging, unchanged -->
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>

<!-- this template replaces the empty our_children node with one full of kids -->
<xsl:template match="våra_barn">
<våra_barn>
<!-- have the kids move in with us -->
<xsl:copy-of select="../../barn/*"/>
</våra_barn>
</xsl:template>

<!-- this template prevents the old children from being copied, ie it deletes the old children nodes -->
<xsl:template match="barn"/>
</xsl:stylesheet>

If I added the select="node()|@*" to the first template it works... :-)

Thanks.

Posttop
(Deleted User) Subject: XML to XML
Author: (Deleted User)
Date: 21 Nov 2005 09:23 AM
Välgjord!

 
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.