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 23:55:31 +0100
Put the elements in the right namespace, and the namespace declarations will
take care of themselves. 

I suspect that you want to generate the environment and variable elements in
the blabla namespace, in which case you need to prefix their names in the
stylesheet.

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

> -----Original Message-----
> From: Nishi Bhonsle [mailto:nishiandprafull@xxxxxxxxx] 
> Sent: 16 August 2006 23:47
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: [xsl] Need help with XSLT: adding new node btw 
> existing elements
> 
> Okay, I could remove the blabla namespace from the output xml 
> doc by adding exclude-result-prefixes="b" in my xslt doc.
> 
> But what about the xmlns="" that gets added to the elements? 
> How can I remove that?
> 
> Thanks!
> 
> On 8/16/06, Nishi Bhonsle <nishiandprafull@xxxxxxxxx> wrote:
> > David:
> > I tried this but in the output, i notice that the namespace 
> gets added 
> > as attributes to the environment as well as variable elements. Is 
> > there way that can be avoided?
> >
> > xslt -
> >
> > <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xmlns:b="blabla"> 
> > <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="b:environment"> <environment>  <variable id="SAROOTDIR" 
> > value="D:\Dir1"/>  <variable id="SADATADIR" value="D:\Dir2"/>  
> > </environment>  </xsl:template> </xsl:stylesheet>
> >
> > and the output looks like -
> >
> > <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet 
> > type="text/xsl" href="C:\test1.xslt"?> <test xmlns="blabla"> <comp 
> > id="New"> <process-type id="home"> <environment xmlns="" 
> > xmlns:b="blabla"> <variable xmlns="" id="SAROOTDIR" 
> value="D:\Dir1"/> 
> > <variable xmlns="" id="SADATADIR" value="D:\Dir2"/> </environment> 
> > </process-type> </comp> </test>
> >
> > Thanks!
> >
> >
> > On 8/16/06, David Carlisle <davidc@xxxxxxxxx> wrote:
> > >
> > >
> > > <xsl:template match="environment">
> > >
> > > that matches elements called environment in no namespace but you 
> > > have no such elements, your original example looked like:
> > >
> > > <test xmlns="blabla">
> > > <comp id="New">
> > > <process-type id="home" module-id="TESTER" status="enabled"> 
> > > <environment>
> > >
> > > so your document has an element environment in the 
> namespace blabla 
> > > to match an element of that name put xmlns:b="blabla" in your xsl 
> > > stylesheet and use
> > >
> > > <xsl:template match="b:environment">
> > >
> > > (This is a FAQ)
> > >
> > > David

Current Thread