Subject: Re: [xsl] Removing unwanted namespaces From: ram <ram_kurra@xxxxxxxxxxx> Date: Thu, 12 Jan 2012 01:06:31 +0530 (IST) |
Thanks for the reply Wendell and Matthieu. I have to use xslt 1.0, unfortunatly i cant use them --- On Wed, 11/1/12, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote: > From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> > Subject: Re: [xsl] Removing unwanted namespaces > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Date: Wednesday, 11 January, 2012, 11:05 PM > Ram, > > It will look something like this (XSLT 2.0): > > <xsl:template match="*"> > <xsl:copy copy-namespaces="no"> > <xsl:copy-of select="@*"/> > <xsl:apply-templates/> > </xsl:copy> > </xsl:template> > > <xsl:template match="soapenv:Header/*"/> > > However, note that while this meets your requirement as > stated, it does not provide declarations at the top for all > namespaces in use, which you probably want. This is somewhat > trickier. > > Assuming your input maps namespaces to prefixes one-to-one, > you could address that problem like this: > > <xsl:template match="/*"> > <xsl:copy copy-namespaces="no"> > <xsl:copy-of select="@*"/> > <xsl:for-each-group select="//*" > group-by="namespace-uri(.)"> > <xsl:namespace > name="{prefix-from-QName(node-name(.))}"> > <xsl:value-of > select="current-grouping-key()"/> > </xsl:namespace> > </xsl:for-each-group> > <xsl:apply-templates/> > </xsl:copy> > </xsl:template> > > You might want to check this paper out (or at any rate, the > stylesheets bundled with it, which offer more comprehensive > solutions to namespace problems): > > http://www.ncbi.nlm.nih.gov/books/NBK62086/ > > I hope this helps, > Wendell > > On 1/11/2012 10:55 AM, ram wrote: > > Hi, > > I have a soap request which > contains header and body information. I want to remove the > content inside the header and the namespaces for those which > are inside the header . > > Here is my example > > > > <?xml version="1.0" encoding="UTF-8"?> > > <soapenv:Envelope xmlns:con="http://abcd.com/abc/context" xmlns:dat="http://test.com/test/testContracts" xmlns:head="http://abcd.com/abc/header" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > > <soapenv:Header> > > > <head:abcdHeader> > > > <head:Props> > > > > > > </head:Props> > > > <head:Routing> > > > > > > </head:Routing> > > > </head:abcdHeader> > > > <con:Context> > > > <con:CtxProps> > > > context info > > > </con:CtxProps> > > > </con:Context> > > </soapenv:Header> > > <soapenv:Body> > > Body content > > </soapenv:Body> > > </soapenv:Envelope> > > > > > > The output i am expecting is like below > > <?xml version="1.0" encoding="UTF-8"?> > > <soapenv:Envelope xmlns:dat="http://test.com/test/testContracts" > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > > <soapenv:Header> > > > > </soapenv:Header> > > <soapenv:Body> > > Body content > > </soapenv:Body> > > </soapenv:Envelope> > > > > > > I tried the following xslt > code which removes the Header Info, but it still keeping the > namespaces which references the ones inside the > header. > > > > > > <xsl:template > match="@*|node()"> > > > <xsl:copy> > > > <xsl:apply-templates > select="@*|node()"/> > > > </xsl:copy> > > </xsl:template> > > <xsl:template > match="//*[local-name()='abcdHeader'] "> > > > > > </xsl:template> > > <xsl:template > match="//*[local-name()='Context'] "/> > > > > > > > The output that i am getting > > > > <?xml version="1.0" encoding="UTF-8"?> > > <soapenv:Envelope xmlns:dat="http://test.com/test/testContracts" > > xmlns:head="http://abcd.com/abc/header" > > xmlns:con="http://abcd.com/abc/context" > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > > <soapenv:Header> > > > > </soapenv:Header> > > <soapenv:Body> > > Body content > > </soapenv:Body> > > </soapenv:Envelope> > > > > i dont want to header and > context namesspaces in the output. How to fix this issue. > > > > --kk > > > > > > -- > ====================================================================== > Wendell Piez > > mailto:wapiez@xxxxxxxxxxxxxxxx > Mulberry Technologies, Inc. > http://www.mulberrytech.com > 17 West Jefferson Street > Direct Phone: > 301/315-9635 > Suite 207 > > Phone: > 301/315-9631 > Rockville, MD 20850 > > Fax: 301/315-8285 > ---------------------------------------------------------------------- > Mulberry Technologies: A Consultancy Specializing in > SGML and XML > ======================================================================
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Removing unwanted namespa, Wendell Piez | Thread | Re: [xsl] Removing unwanted namespa, Wendell Piez |
[xsl] Conditionally have an even pa, Colin DeClue | Date | Re: [xsl] Removing unwanted namespa, Wendell Piez |
Month |