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: "Nishi Bhonsle" <nishiandprafull@xxxxxxxxx>
Date: Wed, 16 Aug 2006 11:47:27 -0700
I did add the xsl:stylesheet element but i dont get the desired output
ie the variable tags dont get added in.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<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>
</xsl:stylesheet>


On 8/16/06, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> 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