[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
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]
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.
... 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
</xsl:stylesheet>
T:\ftemp>xt paul.xml paul.xsl paul.out
T:\ftemp>rem Done!
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Re: [xsl] suppress soap namespace?
Subject: Re: [xsl] suppress soap namespace? From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Tue, 30 Jul 2002 11:25:42 -0400 |
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!
-- 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@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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] suppress soap namespace?, Jeni Tennison | Thread | Re: [xsl] lists again, Steven Foster |
Re: [xsl] Using Attribute in a Pred, David Carlisle | Date | Re: [xsl] Polish Characters, David Carlisle |
Month |