Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

targetNamespace and namespace in WSDL

I am studying SOAP web services and I am really new to Web Services. In the WSDL I got a little confused with regards to the targetNamespace element in the definition and the namespace included in the xsd:schema.

<definitions .... targetNamespace=" " >  <xsd:schema> <xsd:import namespace=" " schemaLocation=""/> </xsd:schema> 

What does it mean by these two elements and I searched through many articles in the web and I was unable to clearly identify this. Can anybody please explain me?

Do these two get same values?

like image 811
Dilan Avatar asked Jan 18 '15 08:01

Dilan


People also ask

What is namespace and targetNamespace in XML?

Figure 1: Elements and attributes in XML Schema namespace are used to write an XML Schema document, which generates elements and attributes as defined by user and puts them in {target namespace}. This {target namespace} is then used to validate the XML instance.

What is the targetNamespace?

The TargetNamespace is the namespace of all schema components in this schema as well as any schema included using the include element. Included schemas must either have the same target namespace as the containing schema or have no target namespace specified.

What is namespace in SOAP?

An XML namespace is a means of qualifying element and attribute names to disambiguate them from other names in the same document. This section provides a brief description of XML namespaces and how they are used in SOAP. For complete information, see http://www.w3.org/TR/REC-xml-names/


2 Answers

The target namespace in the WSDL file will be the name space associated with the SOAP service itself. For example we have a customer service the namespace would be something like http://www.acme.com/Customer/V1/CustomerService.

The XSD imports section is where you specify the namespace of the XSD you are about to import. A XSD file will contain the data that the service will send i.e. it contains the object definitions that will be serialized into XML and sent up and down as the request and responses. A XSD can also contain the operations that the WSDL will expose.

A WSDL can import one or more XSD files and each XSD will have its own namespace. A XSD will contain a namespace such as:

  1. http://www.acme.com/Customer/V1/GetCustomerRequest for the GetCustomerRequest this will define the data structure of the GetCustomerRequest operation.
  2. http://www.acme.com/Customer/V1/CustomerObject for the CustomerObject this will define the data structure of the CustomerObject.

Namespaces are a bit like Java packages they just allow you to define a hierarchy of objects. One important thing to understand is that you might have two Customer objects one that belongs to your sale system and one that belong to your CRM system for example. By placing these in separate namespaces you will be able to use both Customer object in the same service as long as they have unique namespaces.

Normally these namespaces will form part of the SOA catalog as well and defining them will be part of your SOA governance standards. They are important if you want to do SOA successfully.

like image 59
Namphibian Avatar answered Sep 21 '22 09:09

Namphibian


I'll explain using Java analogy.

Namespace is like Java packages. Each xml element is in a namespace. Providing a targetNamespace means that all elements (and types) defined within are in that namespace. It's similar to that all Java classes are within the package.

The xsd being imported will have its own target namespace that would mean that all elements in the xsd will be in the namespace defined.

The import in the wsdl is like providing a java import specifying the package.

I hope I am clear and helpful :D.

like image 44
sashwat Avatar answered Sep 22 '22 09:09

sashwat