xsl-list
[Top] [All Lists]

Re: [xsl] adding element in with general namespace prefix

2012-02-08 15:41:39
A true XML application ignores the namespace prefix and relies only on the namespace URI associated with the namespace prefix.

Can you explain why it is important to you that the prefix be the same? It is irrelevant. This request is equivalent to an XML-based namespace-aware application:

  <giraffe:Envelope xmlns:giraffe="http://schemas.xmlsoap.org/soap/envelope/";>

An XML application will still see the above as a SOAP envelope.

At 2012-02-09 03:06 +0530, ram wrote:
      So any idea how to fix it.

It isn't broken.

I hope this helps.

. . . . . . . . . . Ken

At 2012-02-09 03:06 +0530, ram wrote:
Hi,
   I have a soap request like the following
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:con1="http://abc.com/DefService/"; >
        <soapenv:Header>

         </soapenv:Header>
        <soapenv:Body>
                <con1:GetDefinition>
                        <!--Optional:-->
                        <con1:Request><con1:Id/>
                        </con1:Request>
                </con1:GetDefinition>
        </soapenv:Body>
</soapenv:Envelope>

I wanted to add ws:security with username credentials to the request like the following.



<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:con="http://wellpoint.com/esb/context"; xmlns:con1="http://abc.com/DefService/>
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";>
 <wsse:UsernameToken>
   <wsse:Username>abcd</wsse:Username>
   <wsse:Password>ramkurra</wsse:Password>
 </wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
   <con1:GetDefinition>
        <con1:Id/>
        </con1:Response>
   </con1:GetDefinition>
</soapenv:Body>
</soapenv:Envelope>


i tried with the following piece of code

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
   </xsl:copy>

</xsl:template>
<xsl:template match="/*[local-name()='Envelope']/*[local-name()='Header']">
<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";>
<wsse:UsernameToken>
   <wsse:Username>      abc</wsse:Username>
   <wsse:Password>      xya</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
</xsl:template>
</xsl:stylesheet>

i get the result as expected, but my problem is when client sends the request with different namespace name rather than soapenv:Header, like s:Header, the following line of code will still put soapenv:Header in the result
<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";>

I wanted to make this namespace prefix is more of generalized manner, which picks from request.
      So any idea how to fix it.


--
Contact us for world-wide XML consulting and instructor-led training
Free 5-hour video lecture: XSLT/XPath 1.0 & 2.0 http://ude.my/uoui9h
Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/s/
G. Ken Holman                   mailto:gkholman(_at_)CraneSoftwrights(_dot_)com
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers:    http://www.CraneSoftwrights.com/legal


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--