I've since posted this explanation in my blog: http://atmanes.blogspot.com/2006/07/short-explanation-of-xml-namespaces.html
On 7/7/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Thanks Anne for this profound explanation !! > -----Ursprüngliche Nachricht----- > Von: [email protected] > Gesendet: 07.07.06 18:04:14 > An: [email protected] > Betreff: Re: [axis2] namespace question in wsdl > Robert, > > I know that Axis2 1.0 had a bug in it such that it did not > automatically specify elementFormDefault="qualified" in its generated > schemas, but I thought it was fixed. If you are still seeing schemas > generated without elementFormDefault="qualified" in the latest build, > please file another JIRA. > > I need to see more information to answer your second question: > - how many schemas do you have? > - what are their targetNamespaces? > - what are the namespace declarations in the schema that defines this element? > - what is the targetNamespace of the schema that defines the ReturnWebBase type? > - what is the targetNamespace of the schema that defines the > ElementoGerenciadoComplexo type? > > If both the "tns" and "ns2" prefixes are assigned to the same > namespace, then it doesn't matter. (And that's my assumption, given > that both prefixes work.) > > Here... I'll give you a quick explanation of namespaces: > > The purpose of a namespace qualification is to disambiguate two > components of the same name. For example, if you have multiple schemas > that each defines an element called "foo", how do you tell them apart? > > <s:schema > xmlns:s="http://www.w3.org/2001/XMLSchema" > targetNamespace="urn:example:foo:1"/> > <s:element name="foo" type=x:string"/> > </s:schema> > > <s:schema > xmlns:s="http://www.w3.org/2001/XMLSchema" > targetNamespace="urn:example:foo:2"/> > <s:element name="foo" type=x:int"/> > </s:schema> > > <s:schema > xmlns:s="http://www.w3.org/2001/XMLSchema" > xmlns:ns1="urn:example:foo:1" > xmlns:ns2="urn:example:foo:2" > targetNamespace="urn:example:foo:0"/> > <s:import namespace="urn:example:foo:1"/> > <s:import namespace="urn:example:foo:2"/> > <s:element name="foo"/> > <s:complexType> > <s:sequence> > <s:element ref="ns1:foo"/> > <s:element ref="ns2:foo"/> > </s:sequence> > </s:complexType> > </s:element> > </s:schema> > > An instance document of this element could look like this: > > <ns0:foo > xmlns:ns0="urn:example:foo:0" > xmlns:ns1="urn:example:foo:1" > xmlns:ns2="urn:example:foo:2"> > <ns1:foo>some string</ns1:foo> > <ns2:foo>12345</ns2:foo> > </ns0:foo> > > This is equally valid (but less readable): > > <tns:foo xmlns:tns="urn:example:foo:0"> > <tns:foo xmlns:tns="urn:example:foo:1">some string</tns:foo> > <tns:foo xmlns:tns="urn:example:foo:2">12345</tns:foo> > </tns:foo> > > In other words, the string used for the prefix is irrelevant -- what > matters is the namespace it's been assigned to and the scope of the > namespace declaration. A namespace declaration applies to the element > its defined in and all that element's children, but you can always > reassign the prefix to a different namespace in a child element. > > The default namespace declaration (e.g., xmlns="urn:example:foo:0") > says that all non-explicitly qualified elements belong to the default > namespace. I generally recommend avoiding use of the default namespace > -- especially if you have unqualified elements -- because that forces > you to override the default namespace (e.g., xmlns="") on all > unqualified elements. > > So for example, let's say I have this schema: > > <s:schema > xmlns:s="http://www.w3.org/2001/XMLSchema" > targetNamespace="urn:example:foobar"/> > <s:element name="foobar"/> > <s:complexType> > <s:sequence> > <s:element name="foo" type="s:string"/> > <s:element name="bar" type="s:string"/> > </s:sequence> > </s:complexType> > </s:element> > </s:schema> > > Because the schema does not specify elementFormDefault="qualified", > all local elements ("foo" and "bar") are unqualified. A valid instance > of this schema is: > > <tns:foobar xmlns:tns="urn:example:foobar"> > <foo>some string</foo> > <bar>another string</bar> > </tns:foobar> > > But this is not valid because "foo" and "bar" must be unqualified: > > <foobar xmlns="urn:example:foobar"> > <foo>some string</foo> > <bar>another string</bar> > </foobar> > > This is valid: > > <foobar xmlns="urn:example:foobar"> > <foo xmlns="">some string</foo> > <bar xmlns="">another string</bar> > </foobar> > > Hope this helps. > > Anne > > > On 7/7/06, robert lazarski <[EMAIL PROTECTED]> wrote: > > Thanks Anne! Using elementFormDefault="qualified" did the trick! > > Thanks for the informative response, I'm trying to get it all to sink > > in ;-) . > > > > I've got two questions please: > > > > 1) Considering this example uses the latest axis2 svn on both the > > client and server side, is this a bug with xmlbeans data binding, ie, > > should I log a jira? Your solutions 2 and 3 gave me the impression > > that perhaps its something axis2 should be handling itself assumming > > that this use case is indeed valid. > > > > 2) Looking at my wsdl I believe that both namespaces should be tns > > here, for example: > > > > <element name="findElementoGerenciadoByIdResponse"> > > <complexType> > > <complexContent> > > <extension base="tns:ReturnWebBase"> > > <sequence> > > <!-- on Exception there will be no complex object in > > the message --> > > <element minOccurs="0" maxOccurs="1" > > name="ElementoGerenciadoComplexo" > > type="tns:ElementoGerenciadoComplexo"/> > > </sequence> > > </extension> > > </complexContent> > > </complexType> > > </element> > > > > But changing this to my namespace ns2 also works: > > > > <element minOccurs="0" maxOccurs="1" > > name="ElementoGerenciadoComplexo" > > type="ns2:ElementoGerenciadoComplexo"/> > > > > I'm in doubt what is correct or if it matters in this case. > > > > Thanks! > > Robert > > http://www.braziloutsource.com/ > > > > > > > > On 7/6/06, Anne Thomas Manes <[EMAIL PROTECTED]> wrote: > > > Your response message does not match your schema definition. > > > - Your schema does not specify elementFormDefault="qualified"; > > > therefore, all local elements must be unqualified. > > > - Your response message defines a default namespace; therefore, all > > > non-explicitly qualified elements are qualified by the default > > > namespace. > > > > > > You have a number of options: > > > > > > 1. Add elementFormDefault="qualified" to your schema (best option). > > > > > > 2. Don't change the schema, but specify an explicit namespace in your > > > response message rather than a default namespace, e.g.: > > > > > > <?xml version='1.0' encoding='utf-8'?> > > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > > > <soapenv:Header/> > > > <soapenv:Body> > > > <ns:findElementoGerenciadoByIdResponse xmlns:ns="http://swaMaragatoNS/types"> > > > <errorMessage>FRAMEX_ENTITY_NOTFOUND: > > > Entidade do tipo class > > > br.com.atlantico.maragato.nucleogerencia.model.ElementoGerenciadoTO > > > com id 9.999 não pode ser > > > achada</errorMessage> > > > <successErrorCode>-1</successErrorCode> > > > </ns:findElementoGerenciadoByIdResponse> > > > </soapenv:Body> > > > </soapenv:Envelope> > > > > > > 2. Don't change the schema, and don't specify an explicit namespace in > > > your response message, but override the default namespace in the local > > > elements, e.g.: > > > > > > <?xml version='1.0' encoding='utf-8'?> > > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > > > <soapenv:Header/> > > > <soapenv:Body> > > > <findElementoGerenciadoByIdResponse xmlns:ns="http://swaMaragatoNS/types"> > > > <errorMessage xmlns="">FRAMEX_ENTITY_NOTFOUND: > > > Entidade do tipo class > > > br.com.atlantico.maragato.nucleogerencia.model.ElementoGerenciadoTO > > > com id 9.999 não pode ser > > > achada</errorMessage> > > > <successErrorCode xmlns="">-1</successErrorCode> > > > </ns:findElementoGerenciadoByIdResponse> > > > </soapenv:Body> > > > </soapenv:Envelope> > > > > > > Anne > > > > > > On 7/6/06, robert lazarski <[EMAIL PROTECTED]> wrote: > > > > I've agot a wsdl that's giving me some problems, can someone give a > > > > look at it for me? It seems to validate using eclipse's validator. > > > > > > > > I have two namespaces that I'm having a hard time with - tns and ns2 . > > > > When validating a response on the client side, I'm getting: > > > > > > > > Error Message: Expected element 'errorMessage' instead of > > > > '[EMAIL PROTECTED]://swaMaragatoNS/types' here in element > > > > [EMAIL PROTECTED]://swaMaragatoNS/types > > > > > > > > Location of invalid XML: <errorMessage > > > > xmlns="http://swaMaragatoNS/types" > > > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">FRAMEX_ENTITY_NOTFOUND: > > > > Entidade do tipo class > > > > br.com.atlantico.maragato.nucleogerencia.model.ElementoGerenciadoTO > > > > com id 9.999 não pode ser achada</errorMessage> > > > > > > > > Here's the soap message the client is getting: > > > > > > > > <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope > > > > xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Header > > > > /><soapenv:Body><findElementoGerenciadoByIdResponse > > > > xmlns="http://swaMaragatoNS/types"><errorMessage>FRAMEX_ENTITY_NOTFOUND: > > > > Entidade do tipo class > > > > br.com.atlantico.maragato.nucleogerencia.model.ElementoGerenciadoTO > > > > com id 9.999 não pode ser > > > > achada</errorMessage><successErrorCode>-1</successErrorCode></findElementoGerenciadoByIdResponse></soapenv:Body></soapenv:Envelope> > > > > > > > > My wsdl is attached. Please help! > > > > Robert > > > > http://www.braziloutsource.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] > > > > > > > > > > --------------------------------------------------------------------- > > 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] > ______________________________________________________________ Verschicken Sie romantische, coole und witzige Bilder per SMS! Jetzt bei WEB.DE FreeMail: http://f.web.de/?mc=021193 --------------------------------------------------------------------- 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]
