XML namespaces are not a feature XML Schema. They are simply a feature of XML and their use is governed by the
Namespaces in XML document (see also
Ronald Bourret's XML Namespaces FAQ). Their function is
similar to that of packages in
Java � insofar as both help avoid naming collisions.
XML Schema is simply an XML application used to define, constrain and validate other XML Applications (XML Markup Languages). There are Schema alternatives like
Schematron or
RELAX NG. Namespaces can be used in DTDs. In WSDL you can only reference XML Schema though.
WSDL is an XML application that is used to describe web services. XML Schema was designed to define XML elements and attributes and constrain them for other markup langauges. WSDL requires definition of higher level concepts such as method parameters (part), method signatures (message, input, output), methods (operation), port interfaces (portType), and bindings (binding, service, port) for them which are outside of the scope of XML Schema � so it needs to put these definitions somewhere and it puts them into the targetNamespace.