This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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!


--
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@CraneSoftwrights.com
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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]