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
Paulo CarrilhoSubject: Help! I need a XSL in order to swap nodes
Author: Paulo Carrilho
Date: 09 Mar 2006 08:05 AM
I've a project where the XML should be transformed.

If a tag exists in Output and Parameters, the Parameters one should be replaced by the Output corresponding and its childs.

Example: (XML In):

<RESULT>
<PARAMETERS>
<CYCLE>
<ENDDATE></ENDDATE>
<NUMBER>50</NUMBER>
</CYCLE>
<FILE>
<CHECK>Yes</CHECK>
</FILE>
<DIR>
<NAME>ONE</NAME>
</DIR>
<RUNTYPE>SAMPLE</RUNTYPE>
</PARAMETERS>
<OUTPUT jobfactor="71">
<CYCLE>
<NAME>MARY<\NAME>
<SURNAME>ROSE<\SURNAME>
</CYCLE>
<FILE>
<FILENAME>E:\ftphome\vodafone\xml\CC20060215S50.XML</FILENAME>
</FILE>
</OUTPUT>
</RESULT>

(XML Out):

<PARAMETERS>
<CYCLE>
<NAME>MARY<\NAME>
<SURNAME>ROSE<\SURNAME>
</CYCLE>
<FILE>
<FILENAME>E:\ftphome\vodafone\xml\CC20060215S50.XML</FILENAME>
</FILE>
<DIR>
<NAME>ONE</NAME>
</DIR>
<RUNTYPE>SAMPLE</RUNTYPE>
</PARAMETERS>

I've done somtehing like this:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="iso-8859-1"></xsl:output>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<xsl:template match="OUTPUT"></xsl:template>
<xsl:template match="/RESULT/PARAMETERS/FILE">
<xsl:copy-of select="/RESULT/OUTPUT/FILE" />
</xsl:template>
</xsl:stylesheet>

but this only works if FILE exists, it is not generic. Might you help me, please?

Its urgent.

Postnext
Minollo I.Subject: Help! I need a XSL in order to swap nodes
Author: Minollo I.
Date: 09 Mar 2006 09:17 AM
You can try something like this:

<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="OUTPUT">
</xsl:template>
<xsl:template match="PARAMETERS">
<PARAMETERS>
<xsl:for-each select="*">
<xsl:variable name="elName" select="local-name()"/>
<xsl:choose>
<xsl:when test="../../OUTPUT/*[local-name()=$elName]">
<xsl:copy-of select="../../OUTPUT/*[local-name()=$elName]"/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</PARAMETERS>
</xsl:template>

Postnext
Paulo CarrilhoSubject: Help! I need a XSL in order to swap nodes
Author: Paulo Carrilho
Date: 09 Mar 2006 10:00 AM
Thank you!

However,

it doesnt' work.

It repeats the FILE (and its child) four times. and doesn't put the root (RESULT) neither the RUNTYPE tag

Posttop
Minollo I.Subject: Help! I need a XSL in order to swap nodes
Author: Minollo I.
Date: 09 Mar 2006 10:12 AM
Then you are either using a different XML source document from what you posted or you are not using the XSLT I posted, because what I get running that XSLT is:

<?xml version="1.0"?>
<PARAMETERS>
<CYCLE>
<NAME>MARY</NAME>
<SURNAME>ROSE</SURNAME>
</CYCLE>
<FILE>
<FILENAME>E:\ftphome\vodafone\xml\CC20060215S50.XML</FILENAME>
</FILE>
<DIR>
<NAME>ONE</NAME>
</DIR>
<RUNTYPE>SAMPLE</RUNTYPE>
</PARAMETERS>

I'm attaching the whole XSLT I'm using, for your reference.
Minollo


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