David,
Given a choice, I would like to do it without resorting to a namespace
prefix. Looks like the moment I put targetnamespace into my schema, it
generates a prefix and applies it to all the elements which is right but the
problem is with our server which doesnt accept the request message.

Also, when we receive a response message, XMLBeans fails to parse it
correctly since the response msg doesnt have any namespace while our schema
does since xmlns is "this.one.is.inbound".

I cant use default namespace for both, since scomp tool detects conflicts
while generating java source files.

So, I guess, the only option I am left with is to assign some namespace and
strip it while sending it to the server. For response message received from
the server, prepend a namespace prefix to <GetEquityAccountDetail> tag so
that XMLBeans parses it correctly.

Thanks,
Gopi




Webber, David (NIH/OD) [C] wrote:
> 
> Gopi,
> 
> You are obviously going to have to break this apart as Radu indicated -
> to process the SOAP separately.
> 
> I still want to do this without having to resort to namespace prefixes
> and switching those - which seems clumsy and ugly.
> 
> Having structure variance between the in / out should allow you to
> distinguish between them via XPath expression - and alternate xsd
> definitions - all you then need is to have the two XMLBeans definitions
> so you can select the right one.
> 
> Since I noticed that XMLBeans is sensitive to the URL in the default
> namespace declaration - perhaps this can be used too?
> 
> e.g.
> 
> <Msg type="in" xmlns="this.one.is.inbound"/>
> 
> And 
> 
> <Msg type="out" xmlns="this.one.is.outbound"/>
> 
> And those URLs have to be declared in two different variants of your XSD
> in the target statements.
> 
> Your server I'm assuming will ignore the default xmlns declaration
> variance as its only interested in the well-formed XML.
> 
> DW
> 
> -----Original Message-----
> From: gopi.rcr [mailto:[EMAIL PROTECTED] 
> Sent: Monday, November 27, 2006 5:19 PM
> To: [email protected]
> Subject: RE: blank namespace
> 
> 
> Thanks David for your quick response. 
> Even if I introduce one more header, I guess I am still going to have my
> basic problem of resolving name space collisions when I try to compile
> schemas into java files since <soap-env:header>, <soap-env:body>,
> <getEquityAcountDetails> etc tags will be present in all my request and
> response messages. 
> 
> Thanks,
> Gopi
> 
> 
> 
> Webber, David (NIH/OD) [C] wrote:
>> 
>> Gopi,
>> 
>> Yes - you need to modify your schema - make two choices for the
> elements
>> - and add a parent element above if necessary - so you can have two
>> forms of the child elements - depending on the type of message you are
>> sending.
>> 
>> This is what I was trying to tell you - add a type Hdr to YOUR MSG
>> perhaps is one choice - not the SOAP HDR!!!
>> 
>> Then inside your own header you can have two or more forms of the
>> elements you need.
>> 
>> DW
>> 
>> -----Original Message-----
>> From: gopi.rcr [mailto:[EMAIL PROTECTED] 
>> Sent: Monday, November 27, 2006 1:51 PM
>> To: [email protected]
>> Subject: RE: blank namespace
>> 
>> 
>> Hi David,
>> I already have header info in my message. I didnt post the complete
>> message.
>> My complete msg looks like this:
>> 
>> <soap-env:header>
>>      <action>getEquityAccountDetail</action>
>> </soap-env:header>
>> <soap-env-body>
>>        <getEquityAccountDetails>
>>                 -----
>>                     request information.
>>                 ----
>>        </getEquityAccountDetails>
>> </soap-env-body>
>> 
>> This is what our server expects for a request message. Header as such
>> doesnt
>> contain any useful information related to query.  The response msg
> also
>> has
>> a similar structure only difference being the contents of
>> <getEquityAccountDetails> are different.
>> 
>> Response msg would look like this:
>> 
>> <soap-env:header>
>>      <action>getEquityAccountDetail</action>
>> </soap-env:header>
>> <soap-env-body>
>>        <getEquityAccountDetails>
>>                 -----
>>                     response msg (XML format)
>>                 ----
>>        </getEquityAccountDetails>
>> </soap-env-body>
>> 
>> 
>> 
>> I am open to modify my schema if it is going to solve the issue.
>> 
>> Thanks,
>> Gopi
>> 
>> 
>> 
>> 
>> 
>> Webber, David (NIH/OD) [C] wrote:
>>> 
>>> Why don't you re-design your schema so its not so badly overloaded?
>>> 
>>> Seems simple to add a few parent elements to resolve all this - such
>> as:
>>> 
>>> <Msg>
>>>   <Query>
>>>    <!- - Msg goes here -->
>>>   </Query>
>>>   <Response>
>>>    <!- - Msg goes here -->
>>>   </Response>
>>> </Msg>
>>> 
>>> Or if you don't like that - what about
>>> 
>>> <Msg>
>>>   <Hdr> my header stuff goes here for each Msg type </Hdr>
>>>   <Body>
>>>     <!- - Msg goes here -->
>>>   </Body>
>>> </Msg>
>>> 
>>> Seems like your original design for the xsd is what is giving you all
>>> the problems...
>>> 
>>> DW
>>> 
>>> -----Original Message-----
>>> From: gopi.rcr [mailto:[EMAIL PROTECTED] 
>>> Sent: Wednesday, November 22, 2006 5:51 PM
>>> To: [email protected]
>>> Subject: RE: blank namespace
>>> 
>>> 
>>> Radu,
>>> Thanks for the detailed explanation.
>>> 
>>> Now I understand why it is behaving the way it is behaving. 
>>> 
>>> Let me explain the problem that I am facing. The request and response
>>> XML
>>> message formats for our server dont have any namespaces for the XML
>>> elements. ie. they belong to a default namespace. 
>>>  
>>> eg: <GetEquityAccountDetail> is used for both request as well as
>>> response
>>> however the contents of this element are different for both request
>> and
>>> response. 
>>> 
>>> If I run these two schemas through scomp tool, there will be
> namespace
>>> collisions. So, to get around this problem, I associated  "req" and
>>> "resp"
>>> prefixes for request and response messages respectively. Now, I have
>> two
>>> issues.
>>> 
>>> 1) When I generate a request message, it puts a "req" prefix which is
>>> perfect. BUt our server doesnt like the request message if there is a
>>> namespace prefix. So, I use saveImplicitNameSpaces to get rid of
> "req"
>>> prefix but it puts blank namespace references to other elements.
>> Though
>>> the
>>> message is semantically correct, our server fails to validate. Looks
>>> like
>>> our server uses some kind of string matching program( not sure ) to
>>> validate
>>> the request message. Please let me know if there is a better way of
>>> solving
>>> this.
>>> 
>>> <req:GetEquityAccountDetail xmlns:req="http://.....";>
>>>     <acccountNumber> </acccountNumber>
>>>     <productCode> </productCode>
>>>     <elementList> </elementList>
>>> </req:GetEquityAccoungDetail>
>>> 
>>> 
>>> 2) I hardcode the request message and get the following response from
>>> the
>>> server. 
>>> 
>>> <getEquityAccountDetail>
>>>       <serviceName>ElpsService</serviceName>
>>>       <action>getEquityAccountDetail</action>
>>>       <processingTime>117</processingTime>
>>>       <info>
>>>               <accountNumber>65165104446500001</accountNumber>
>>>               <productCode>LCA</productCode>
>>>               <lineOfCredit> </lineofCredit>
>>>        </info>
>>> </getEquityAccountDetail>
>>> 
>>> 
>>> Now, my schema has "resp" name prefix for the response message. So,
>>> parsing
>>> would obviously fail since the response I got from the server doesnt
>>> have
>>> any namespace. So, I use the following options.
>>> 
>>>                     HashMap m=new HashMap();
>>>                     m.put("","http://service.wellsfargo.com/resp/";);
>>>                     opts.setLoadSubstituteNamespaces(m);
>>> 
>>> When I try to print the values for ServiceName, ProcessingTime and
>> Info,
>>> it
>>> is printing null for all these values.
>>> 
>>>     
>>> xml.response.GetEquityAccountDetailDocument.GetEquityAccountDetail
>>> 
>>>                  gead=geadRespDoc.getGetEquityAccountDetail();
>>>                  System.out.println(" Service name in body
>>> "+gead.getServiceName());
>>>                  System.out.println(" processing time in body
>>> "+gead.getProcessingTime())
>>> 
>>> Could you please tell me what I am missing? 
>>> Please let me know if there is a bettwer way of handling this.
>>> 
>>> 
>>> 
>>> Thanks in advance,
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> Radu Preotiuc-Pietro wrote:
>>>> 
>>>> Gopi and David,
>>>> 
>>>> This is not about namespace declarations, this is about the names of
>>>> elements in an XML document. In namespace-aware Schema processors
>>> (like
>>>> XMLBeans and mostly everyhing out there, except for some legacy
>> apps),
>>>> each element or attribute has a name (or QName, qualified name) that
>>> is
>>>> composed of a namespace uri (which can be empty) and a local name.
>>>> 
>>>> Now, in XMLSchema too, each time elements or attributes are
> declared,
>>> a
>>>> name is also part of the declaration. The names declared in the
>>>> XMLSchema and the names present in the instance XML file have to
>> match
>>>> in order for the document to be valid, and this is what XMLBeans
>> tries
>>>> to ensure.
>>>> 
>>>> Now in gopi's example, that Schema declared an element with the name
>>>> (local [EMAIL PROTECTED] uri)
>>>> 
>>>> [EMAIL PROTECTED]://service..com/req/ (local
>>>> name=getEquityAccountDetail, namespace-uri=http://service..com/req/)
>>>> 
>>>> This element in turn is supposed to contain the elements
>>>> 
>>>> accountNumber@
>>>> productCode@
>>>> elementList@
>>>> 
>>>> This is why the original document looks the way it does. It is
>>> correct.
>>>> By setting setSaveImplicitNamespaces(m), you tell XMLBeans that the
>>>> prefix "" (the default prefix) is already associated to the
>>>> "http://service..com/req/";, so then XMLBeans, correctly again,
>> doesn't
>>>> redeclare it, but then when it comes to the "accountNumber", this
>>>> element has to have an empty namespace-uri and the only way to
>> achieve
>>>> this is to use an xmlns="" declaration. This is correct and fully
>>>> expected.
>>>> 
>>>> All I am trying to say is that we have to look at this is terms of
>>>> changing names for elements, not in terms of manipulating prefix
>>>> declarations. On the loading side, we have
>>>> .setLoadSubstituteNamespaces() which replaces a namespace uri with
>>>> another for each name in the document. But this, again, does not
> have
>>>> the ability to replace any namespace in the incoming document with
>>>> something, you have to tell it in advance what namespaces to expect.
>>> On
>>>> the saving side, there is no option like that, I guess users have
>>> found
>>>> it useful only for loading.
>>>> 
>>>> I really want to do my best to help here, what part of what I wrote
>>>> din't make sense?
>>>> 
>>>> Radu
>>>> 
>>>> -----Original Message-----
>>>> From: Webber, David (NIH/OD) [C] [mailto:[EMAIL PROTECTED] 
>>>> Sent: Wednesday, November 22, 2006 7:03 AM
>>>> To: [email protected]
>>>> Subject: RE: blank namespace
>>>> 
>>>> Yeah - this is related to what I've been complaining about for a
>> week!
>>>> 
>>>> Handling of default namespace is the reverse of what you would
>> expect.
>>>> 
>>>> What you try is putting a default namespace declaration on your root
>>>> element - <req:getEquityAccountDetail
>>> xmlns="http://banktrans/default/";>
>>>> 
>>>> Which will at least prevent it having to generate ones for you
> inside
>>>> your XML.
>>>> 
>>>> There should however be some way to tell XMLBeans to not require a
>>>> default namespace declaration - but so far I've not been able to
>> track
>>>> down how...
>>>> 
>>>> DW
>>>> 
>>>> -----Original Message-----
>>>> From: gopi.rcr [mailto:[EMAIL PROTECTED]
>>>> Sent: Tuesday, November 21, 2006 7:03 PM
>>>> To: [email protected]
>>>> Subject: Re: blank namespace
>>>> 
>>>> 
>>>> Forgot to include,
>>>> 
>>>> My schema file looks somthing like this.
>>>> 
>>>> <xs:schema targetNamespace="http://service..com/req/"; 
>>>>        xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>>>> 
>>>> <xs:import schemaLocation="Elps_GetEquityData_Request1.xsd"/>
>>>>    <xs:element name="getEquityAccountDetail">
>>>>            <xs:complexType>
>>>>                    <xs:sequence>
>>>>                            <xs:element ref="accountNumber"/>
>>>>                            <xs:element ref="productCode"/>
>>>>                            <xs:element ref="elementList"/>
>>>>                    </xs:sequence>
>>>>            </xs:complexType>
>>>>    </xs:element>
>>>> </xs:schema>
>>>> 
>>>> The elements accountNumber, productCode and elementList dont have a
>>>> namespace.
>>>> 
>>>> Thanks,
>>>> 
>>>> 
>>>> 
>>>> gopi.rcr wrote:
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> I have an XMLBeans based program for generating XML output. XML
>>> output
>>>> 
>>>>> looks as below:
>>>>> 
>>>>> <req:getEquityAccountDetail>
>>>>>       <accountNumber>
>>>>>         <bank>651</bank>
>>>>>         <branch>651</branch>
>>>>>         <customer>0444650</customer>
>>>>>         <loan>0001</loan>
>>>>>       </accountNumber>
>>>>>       <productCode>LCA</productCode>
>>>>> -----------
>>>>> 
>>>>> When I modify my code to filter out req namespace prefix by doing
>> the
>>>>> following.
>>>>> 
>>>>> XmlOptions op = new XmlOptions();
>>>>> HashMap m=new HashMap();
>>>>> m.put("","http://service.wellsfargo.com/req/";);  //namespace uri
> for
>>>> req
>>>>> opts.setSaveImplicitNamespaces(m);
>>>>> 
>>>>> -----------------------------------------------------------
>>>>> 
>>>>> I am getting output as follows, which has unwanted blank namespace
>>>>> references for accountNumber and ProductCode. What should I do to
>> get
>>>> rid
>>>>> of these namespace references ? Why is it putting the blank
>> namespace
>>>>> references ?
>>>>> 
>>>>> <getEquityAccountDetail>
>>>>>       <accountNumber xmlns="">
>>>>>         <bank>651</bank>
>>>>>         <branch>651</branch>
>>>>>         <customer>0444650</customer>
>>>>>         <loan>0001</loan>
>>>>>       </accountNumber>
>>>>>       <productCode xmlns="">LCA</productCode>
>>>>> 
>>>>> 
>>>>> You help is highly appreicated.
>>>>> 
>>>>> Thanks
>>>>> 
>>>>> 
>>>> 
>>>> -- 
>>>> View this message in context:
>>>> http://www.nabble.com/blank-namespace-tf2681769.html#a7482861
>>>> Sent from the Xml Beans - User mailing list archive at Nabble.com.
>>>> 
>>>> 
>>>>
> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>> 
>>>>
> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>> 
>>>>
>>>
>>
> _______________________________________________________________________
>>>> Notice:  This email message, together with any attachments, may
>>> contain
>>>> information  of  BEA Systems,  Inc.,  its subsidiaries  and
>>> affiliated
>>>> entities,  that may be confidential,  proprietary,  copyrighted
>>> and/or
>>>> legally privileged, and is intended solely for the use of the
>>> individual
>>>> or entity named in this message. If you are not the intended
>>> recipient,
>>>> and have received this message in error, please immediately return
>>> this
>>>> by email and then delete it.
>>>> 
>>>>
> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>> 
>>>> 
>>>> 
>>> 
>>> -- 
>>> View this message in context:
>>> http://www.nabble.com/blank-namespace-tf2681769.html#a7497571
>>> Sent from the Xml Beans - User mailing list archive at Nabble.com.
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>> 
>>> 
>>> 
>> 
>> -- 
>> View this message in context:
>> http://www.nabble.com/blank-namespace-tf2681769.html#a7565484
>> Sent from the Xml Beans - User mailing list archive at Nabble.com.
>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> 
>> 
>> 
> 
> -- 
> View this message in context:
> http://www.nabble.com/blank-namespace-tf2681769.html#a7569291
> Sent from the Xml Beans - User mailing list archive at Nabble.com.
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/blank-namespace-tf2681769.html#a7585296
Sent from the Xml Beans - User mailing list archive at Nabble.com.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to