[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
Re: adding element in with general namespace prefix
Subject: Re: adding element in with general namespace prefix
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Wed, 08 Feb 2012 17:01:31 -0500
|
Ram,
Maybe you want to use xsl:copy, which may do better for you. Most
processors, when copying an element, will use the same prefix as the
input document uses.
Or it may not: as Ken says, processors are not obliged to respect
prefixes since a prefix is not properly part of the name, as formally
defined; it is only a (local) binding mechanism.
If you are answering a requirement from a partner who does not
understand this, you can, in XSLT 2.0, go to considerably more work to
construct elements with namespaces, names and their prefixes generated
dynamically, using XPath functions such as name(), prefix-from-QName(),
and namespace-uri-for-prefix(). An XSLT stylesheet could generate a new
header using whatever prefix the input uses, whatever it is -- although
such a stylesheet will look pretty mysterious to the uninitiated.
But this is not trivial to do, and a lot of trouble to go to for
something that matters only because someone thinks it matters. Even
worse, if you are addressing a set of requirements that have never been
articulated, which you have only because someone at some point might be
unhappy about something ... well. That's a difficult problem to solve.
Cheers,
Wendell
On 2/8/2012 4:46 PM, ram wrote:
i completly agree with you, but some time service provider may not like it when he sees the request, he may question, why are you keeping different namespace prefix for same namespace.
i wanted to be consistent in the entire soap request that i am sending
--- On Thu, 9/2/12, G. Ken Holman<gkholman@xxxxxxxxxxxxxxxxxxxx> wrote:
From: G. Ken Holman<gkholman@xxxxxxxxxxxxxxxxxxxx>
Subject: Re: adding element in with general namespace prefix
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx, xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Date: Thursday, 9 February, 2012, 3:11 AM
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@xxxxxxxxxxxxxxxxxxxx
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers: http://www.CraneSoftwrights.com/legal
--
======================================================================
Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================
|
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
RSS 2.0 |
|
Atom 0.3 |
|
|