W3C home > Mailing lists > Public > www-ws-desc@w3.org > July 2003

Re: <types> <schema/> <schema/> question

From: remko de knikker <remko.deknikker@yale.edu>
Date: Thu, 10 Jul 2003 09:16:42 -0400
To: www-ws-desc@w3.org
Message-id: <3F0D673A.2000405@yale.edu>
Thanks.
r

Anne Thomas Manes wrote:

> I would not recommend defining a different namespace for each message 
> unless the element names within the messages are the same and you need 
> a way to distinguish them. A namespace is just a tool to help 
> you distinguish things with the same name. For example, you might have 
> two different elements called foo:
>  
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>    targetNamespace="urn:foo.one">
>    <xsd:element name="foo" type="xsd:string"/> 
> </xsd:schema>
>  
> and
>  
> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>    targetNamespace="urn:foo.two">
>    <element name="foo" type="xsd:float"/>
> </xsd:schema>
>  
> Obviously these are different elements, but if you don't use a 
> namespace qualifier, you can't tell them apart.
>  
> <wsdl:definitions xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/
>    xmlns:one="urn:foo.one"
>    xmlns:two="urn:foo.two">
> <wsdl:message name="fooMessage">
>   <wsdl:part name="one" element="one:foo"/>
>   <wsdl:part name="two" element="two:foo"/>
> </wsdl:message>
>  
> As long as you don't having naming conflicts, it's quite reasonable to 
> put all of your definitions (both schema and wsdl) in the same 
> namespace. But a lot of people like to define a different namespace 
> for each part of the defintion (one for your <types> (e.g, types:), 
> one for your <message>s and <portType>s (e.g., intf:), and one for 
> your <binding>s and <service> (e.g., impl:)). All approaches are valid.
>  
> You can't define different namespaces for each operation, because 
> <operation> is a child of <portType> and you can only define a 
> targetNamespace at the <definitions> level. (But you could define a 
> different namespace for each <portType> if you really want to.) I 
> wouldn't recommend it, though, unless you want to use the same name 
> for different portTypes. Operations must have unique names within a 
> portType, but you may use the same operation name in different 
> portTypes in the same namespace.
>  
> Anne
>
>     ----- Original Message -----
>     From: remko de knikker <mailto:remko.deknikker@yale.edu>
>     To: Anne Thomas Manes <mailto:anne@manes.net>
>     Sent: Wednesday, July 09, 2003 2:30 PM
>     Subject: Re: <types> <schema/> <schema/> question
>
>     Thanks, Anne, that makes sense. wsdl.exe indeed complained about
>     the namespaces being the same for both schema's within the
>     <wsdl:types>. The fact that both methods are allowed actually
>     confused me, but if they're both legal it's solved.
>     PS:
>     Is it good custom to
>     define a namespace for each message?
>     or for each wer service operation?
>     or per web service?
>     per group of services?
>     per ...
>
>     r
>
>     Anne Thomas Manes wrote:
>
>>     Remko,
>>      
>>     Both examples should work. You should be able to define any
>>     number of <xds:schema> elements within a <wsdl:types> element,
>>     although since you are using the same targetNamespace, it doesn't
>>     really make sense to decribe them using two different schemas. I
>>     would suggest that you define both elements in the same
>>     <xsd:schema> element (it's more efficient).
>>      
>>     <wsdl:types> doesn't prescribe how to define your types. You need
>>     to use a type description system, such as XML Schema or RELAX
>>     TNG. Of course -- most WSDL compilers only support XML Schema, so
>>     that's the general convention. If you use XML Schema, then your
>>     type definitions must obey the rules of XML Schema. You can
>>     define any number of elements or types within a single <schema>
>>     element.
>>      
>>     As with a <wsdl:definitions> element, a <xsd:schema> document
>>     creates a namespace, or it can adds its definitions to an
>>     existing namespace. A schema or WSDL compiler shouldn't object to
>>     you using the same targetNamespace in multiple <xsd:schema> or
>>     <wsdl:definitions> documents.
>>      
>>     It sounds as if wsdl.exe is a bit over-sensitive about the schema
>>     description. Can you tell me what error you get from it when you
>>     try to compile the second example?
>>      
>>     Anne
>>
>>         ----- Original Message -----
>>         From: remko de knikker <mailto:remko.deknikker@yale.edu>
>>         To: www-ws-desc@w3.org <mailto:www-ws-desc@w3.org>
>>         Sent: Wednesday, July 09, 2003 1:51 PM
>>         Subject: <types> <schema/> <schema/> question
>>
>>         I am a little bit confused on how to use the <schema> tag in
>>         the wsdl's <types>
>>
>>         I have seen examples that use 2 schema-tags, one for the
>>         RequestMessage and one for the ResponseMessage, and I have
>>         seen examples, where Request and Response element are both a
>>         child of the schema-tag. Can some one tell me what the
>>         correct way of defining my request and response message is??
>>
>>         NB: WSDL2Java does not complain about the following, and does
>>         not complain if I put 2 schema-tags in there. But wsdl.exe
>>         insists I define it as below.
>>
>>         <wsdl:types>
>>
>>         <xsd:schema
>>         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>         xmlns:tns="http://biryani.med.yale.edu:8081/axis/services/GetXSLIM"
>>         targetNamespace="http://biryani.med.yale.edu:8081/axis/services/GetXSLIM"
>>         >
>>
>>         <xsd:element name="method2Request">
>>           <xsd:complexType>
>>             <xsd:sequence>
>>                 <xsd:element name="cid" type="xsd:string"/>
>>               </xsd:sequence>
>>         </xsd:complexType>
>>         </xsd:element>
>>
>>         <xsd:element name="method2Response">
>>           <xsd:complexType>
>>             <xsd:sequence>
>>                 <xsd:any minOccurs="0"/>
>>               </xsd:sequence>
>>         </xsd:complexType>
>>         </xsd:element>
>>
>>         </xsd:schema>
>>
>>         </wsdl:types>
>>
>>
>>         OR??
>>
>>
>>         <wsdl:types>
>>
>>         <xsd:schema
>>         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>         xmlns:tns="http://biryani.med.yale.edu:8081/axis/services/GetXSLIM"
>>         targetNamespace="http://biryani.med.yale.edu:8081/axis/services/GetXSLIM"
>>         >
>>         <xsd:element name="method2Request">
>>           <xsd:complexType>
>>             <xsd:sequence>
>>                 <xsd:element name="cid" type="xsd:string"/>
>>               </xsd:sequence>
>>         </xsd:complexType>
>>         </xsd:element>
>>         </xsd:schema>
>>
>>         <xsd:schema
>>         xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>         xmlns:tns="http://biryani.med.yale.edu:8081/axis/services/GetXSLIM"
>>         targetNamespace="http://biryani.med.yale.edu:8081/axis/services/GetXSLIM"
>>         >
>>         <xsd:element name="method2Response">
>>           <xsd:complexType>
>>             <xsd:sequence>
>>                 <xsd:any minOccurs="0"/>
>>               </xsd:sequence>
>>         </xsd:complexType>
>>         </xsd:element>
>>
>>         </xsd:schema>
>>
>>         </wsdl:types>
>>
>
Received on Thursday, 10 July 2003 09:14:47 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 7 December 2009 10:58:25 GMT