[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: suppress soap namespace?
At 2002-07-30 08:52 -0600, Paul Coleman wrote:
[a posting answered last night on XML-DEV ... my answer is posted here for the benefit of readers of this mail list] I have a soap input document as follows: ... I am trying get just the soap body elements out via XSLT, but I always get the soap ns on the justiceXML element (the first body element). My style sheet is as follows: <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl=http://www.w3.org/1999/XSL/Transform exclude-result-prefixes="soap-env"> <xsl:output method="xml" /> <xsl:template match="justiceXML"> <xsl:copy-of select="." /> </xsl:template> </xsl:stylesheet> ... Question: is there a way to supress the soap namespace from the output? Yes, by regenerating all elements found that are not in the soap namespace, because all elements in the instance have attached namespace nodes from all ancestral namespace declarations and your stylesheet's act of copying the elements from the source node tree to the result node tree is carrying along the unwanted namespace nodes. Using exclude-result-prefixes doesn't make any difference. ... by definition. The attribute exclude-result-prefixes= only prunes unwanted namespace nodes from the stylesheet node tree, not from the source node tree. The example solution below will work with any soap-env:Body children, and will not be tied to a particular body content. I hope this helps. ................... Ken T:\ftemp>type paul.xml <?xml version="1.0" encoding="UTF-8"?> <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Header/> <soap-env:Body> <justiceXML> <documentDescriptor type="request" class="OTrackNameListRequest"/> <payload> <person> <personName> <firstName>MICHAEL</firstName> <lastName>MOLEN</lastName> </personName> <personDescription> <sex>Male</sex> <birthDate>1910-08-01</birthDate> </personDescription> </person> </payload> </justiceXML> </soap-env:Body> </soap-env:Envelope> T:\ftemp>type paul.xsl <?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" exclude-result-prefixes="soap-env" version="1.0"> <xsl:template match="/"> <xsl:apply-templates select="soap-env:Envelope/soap-env:Body/node()"/> </xsl:template> <xsl:template match="*"> <!--synthesize element with the input name--> <xsl:element name="{name(.)}" namespace="{namespace-uri(.)}"> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:element> </xsl:template> </xsl:stylesheet> T:\ftemp>xt paul.xml paul.xsl paul.out T:\ftemp>type paul.out <?xml version="1.0" encoding="utf-8"?> <justiceXML> <documentDescriptor type="request" class="OTrackNameListRequest"/> <payload> <person> <personName> <firstName>MICHAEL</firstName> <lastName>MOLEN</lastName> </personName> <personDescription> <sex>Male</sex> <birthDate>1910-08-01</birthDate> </personDescription> </person> </payload> </justiceXML> T:\ftemp>rem Done!
G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (Fax:-0995) ISBN 0-13-065196-6 Definitive XSLT and XPath ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath ISBN 1-894049-07-1 Practical Formatting Using XSLFO XSL/XML/DSSSL/SGML/OmniMark services, books (electronic, printed), articles, training (instructor-live,Internet-live,web/CD,licensed) Next public training: 2002-08-05,26,27,09-30,10-03,07,10 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|