[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Removing unwanted namespaces

Subject: Re: Removing unwanted namespaces
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Wed, 11 Jan 2012 12:35:30 -0500
Re:  Removing unwanted namespaces
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

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.