[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Strip Soap namespace?
XSL, XSLT and XPath questions would be better posted to the following list: http://www.mulberrytech.com/xsl/xsl-list There are a number of subscribers who would enthusiastically respond to such questions. There is also an *excellent* FAQ at: http://www.dpawson.co.uk Helpful information regarding the Microsoft MSXML DLL can be found at: http://www.netcrucible.com/xslt/msxml-faq.htm There are voluminous resource pages at: http://xml.coverpages.org/xsl.html At 2002-07-29 16:07 -0600, Paul Coleman wrote: >I have an xml input document as follows: Your example was corrupted and incomplete, so I tried to guess at what you actually have. >I am trying get just the soap body elements out via XSLT, but I always get >the soap ns on the justiceXML element. My style sheet is as follows: > ><?xml version="1.0"?> ><xsl:stylesheet version="1.0" >xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/" >xmlns:xsl=<http://www.w3.org/1999/XSL/Transform>http://www.w3.org/1999/XSL/Transform > >exclude-result-prefixes="soap-env"> Note the exclude-result-prefixes= attribute only prunes unwanted namespace nodes from the stylesheet node tree and never has any effect on the source node tree. You still need it in your stylesheet since you need to declare the envelope namespace, though my example below doesn't have any literal result elements that could bring over the namespace, it might in the future so it is best to prepare ahead of time. ><xsl:output method="xml" /> > <xsl:template match="justiceXML"> > <xsl:copy-of select="." /> The act of copying an element node from either the source or stylesheet tree to the result tree will also copy all of that element's attached namespace nodes, of which there will be one for every ancestral namespace declaration. Thus, every element in your justiceXML sub-tree branch will drag along a SOAP namespace because the SOAP namespace is declared in an element ancestor of the sub-tree. ></xsl:template> ></xsl:stylesheet> >and my output: ><?xml version="1.0" encoding="UTF-8"?> ><justiceXML xmlns:soap-env=" class="OTrackNameListRequest" >type="request"/><payload><person><personName><firstName>MICHAEL</firstName><lastName>MOLEN</lastName><fullName>MICHAEL >MOLEN</fullName></personName><personDescription><sex>Male</sex><birthDate>1960-07-11</birthDate></personDescription></person></payload></justiceXML> > >Question: is there a way to supress the soap namespace from the output? A working example is below, with the XML instance that I tried to divine from the non-well-formed examples you gave (even your output quoted above isn't well formed). >Using exclude-result-prefixes doesn't make any difference. ... by definition. The solution below will work stripping the SOAP namespace from any excerpted body contents, and is not tied specifically to the justiceXML element type. I hope this helps. ................... Ken T:\ftemp>type justin.xml <?xml version="1.0" encoding="UTF-8"?> <soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"> <soap-env:Body> <justiceXML type="request" class="OTrackNameListRequest"> <payload> <person> <personName> <firstName>MICHAEL</firstName> <lastName>MOLEN</lastName> <fullName>MICKEY MOLEN</fullName> </personName> <personDescription> <sex>Male</sex> <birthDate>1910-08-01</birthDate> </personDescription> </person> </payload> </justiceXML> </soap-env:Body> </soap-env:Envelope> T:\ftemp>type justin.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 justin.xml justin.xsl justin.out T:\ftemp>type justin.out <?xml version="1.0" encoding="utf-8"?> <justiceXML type="request" class="OTrackNameListRequest"> <payload> <person> <personName> <firstName>MICHAEL</firstName> <lastName>MOLEN</lastName> <fullName>MICKEY MOLEN</fullName> </personName> <personDescription> <sex>Male</sex> <birthDate>1910-08-01</birthDate> </personDescription> </person> </payload> </justiceXML> T:\ftemp>rem Done! -- Upcoming hands-on in-depth 3-days XSLT/XPath and/or 2-days XSL-FO: - North America: Sep 30-Oct 4,2002 - Japan: Oct 7-Oct 11,2002 G. Ken Holman mailto:gkholman@C... Crane Softwrights Ltd. http://www.CraneSoftwrights.com/x/ 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
|
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
|