Subject: RE: 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: 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
|