RE: [xsl] Need help with XSLT: adding new node btw existing elements

Subject: RE: [xsl] Need help with XSLT: adding new node btw existing elements
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 16 Aug 2006 19:12:06 +0100
> Trying to load the following xsl in XMLSpy gives document 
> mal-formed error.

Mukul left out the xsl:stylesheet element to reduce noise and save typing.

If you didn't spot that, then we really are starting from the basics...

Michael Kay
http://www.saxonica.com/



> Also, what if i have several occurences of the environment 
> element in the doc and i need to add the new nodes to a 
> specific occurence only?
> ie
> If I have to add the new nodes to the environment tag that 
> has comp id = New, how can I change the xsl to do that?
> 
> <?xml version = '1.0' encoding = 'UTF-8'?> <test 
> xmlns="blabla"> <comp id="Old"> <process-type id="home" 
> module-id="TESTER1" status="enabled"> <environment>
>    <variable id="TMP" value="C:\DOCUME~1\manez\LOCALS~1\Temp"/>
> </environment>
> </process-type>
> </comp>
> 
> <comp id="New">
> <process-type id="home" module-id="TESTER" status="enabled"> 
> <environment> </environment> </process-type> </comp> </test>
> 
> On 8/16/06, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote:
> > The transform requires to modify only the "environment" 
> element, and 
> > keeping rest of the structure same. To solve this problem, 
> you require 
> > an identity transform template, and a template to process the 
> > "environment" element.
> >
> > <xsl:template match="node() | @*">
> >  <xsl:copy>
> >     <xsl:apply-templates select="node() | @*" />  </xsl:copy> 
> > </xsl:template>
> >
> > <xsl:template match="environment">
> >   <environment>
> >     <variable id="SAROOTDIR" value="D:\Dir1"/>
> >     <variable id="SADATADIR" value="D:\Dir2"/>
> >   </environment>
> > </xsl:template>
> >
> > On 8/16/06, Nishi Bhonsle <nishiandprafull@xxxxxxxxx> wrote:
> > > Hi:
> > >
> > > I have the following input xml document, I need to write 
> an xsl to 
> > > transform it to the output xml document.
> > >
> > > Input xml document -
> > >
> > > <?xml version = '1.0' encoding = 'UTF-8'?> <test xmlns="blabla"> 
> > > <comp id="New"> <process-type id="home" module-id="TESTER" 
> > > status="enabled"> <environment> </environment> </process-type> 
> > > </comp> </test>
> > >
> > > Output xml document -
> > >
> > > <?xml version = '1.0' encoding = 'UTF-8'?> <test xmlns="blabla"> 
> > > <comp id="New"> <process-type id="home" module-id="TESTER" 
> > > status="enabled"> <environment> <variable id="SAROOTDIR" 
> > > value="D:\Dir1"/> <variable id="SADATADIR" value="D:\Dir2"/> 
> > > </environment> </process-type> </comp> </test>
> > >
> > > Can someone please help write an xsl to transform the above input 
> > > xml document into the output xml document?
> > >
> > > Thanks much!
> >
> > --
> > Regards,
> > Mukul Gandhi
> >
> > http://gandhimukul.tripod.com

Current Thread