How to Import XSD Into WSDL

Written by jay rigsby
  • Share
  • Tweet
  • Share
  • Pin
  • Email
How to Import XSD Into WSDL
(Photos.com/Photos.com/Getty Images)

Web service description language (WSDL) is a model and format for describing web services using XML. A consumer can locate a service and execute its operations. This process can be automated using most common development tools, enabling application integration with little developer produced code. WSDLs are a contract between the service provider and consumer; it makes a service self-describing. WSDLs provide descriptions of all public operations, data types for all service messages, binding details for the transport protocol and service address information. An "import" element can be used in a WSDL to import external WSDLs or XML schemas. Importing external items is useful for allowing the WSDL to be more modular, reuse of XML data types among multiple service definitions and support multiple versions of a schema.

Skill level:
Easy

Other People Are Reading

Things you need

  • Text or XML editor

Show MoreHide

Instructions

  1. 1

    Create new file in your text or XML editor. If the editor supports WSDLs, select WSDL as the file type. If it does not support WSDLs, but supports XML, select XML as the file type. If neither WSDLs or XML are supported, select a plain text file type.

  2. 2

    Name the file with any name you desire, and give the file a ".wsdl" extension. For example, the file can be named "HelloWorld.wsdl."

  3. 3

    Create a second new file in your text or XML editor. If the editor supports XML schemas, select XML schema or XSD as the file type. If it does not support XML schemas, but supports XML file, select XML as the file type. If neither XML schemas or XML are supported, select a plain text file type.

  4. 4

    Name the file with any name you desire, and give the file a ".xsd" extension. For example, the file can be named "HelloWorld.xsd."

  5. 5

    Enter the following markup in the XML schema file you created:

    <?xml version="1.0" ?>

    <xsd:schema targetNamespace="http://schemas.myorg.com/person/phone"

            xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
    

    <xsd:import namespace="http://www.w3.org/2001/XMLSchema"/>

    <xsd:complex Type name="Phone">

    &lt;xsd:sequence&gt;
    
      &lt;xsd:element name="areaCode" type="xsd:int"/&gt;
    
      &lt;xsd:element name="exchange" type="xsd:int"/&gt;
    
      &lt;xsd:element name="number" type="xsd:int"/&gt;
    
    &lt;/xsd:sequence&gt;
    

    </xsd:complex Type>

    </xsd:schema>

    This defines a schema with the namespace "http://schemas.myorg.com/person/phone," which defines a single data type "Phone."

  6. 6

    Enter the following markup in the WSDL file you created:

    <?xml version="1.0"?>

    <wsdl:description xmlns:wsdl="http://www.w3.org/ns/wsdl"

    xmlns:wsoap= "http://www.w3.org/ns/wsdl/soap"

    xmlns:external="http://schemas.myorg.com/person/phone"

    xmlns:helloWorld="http://schemas.myorg.com/wsdl/helloworld"

    targetNamespace="http://schemas.myorg.com/wsdl/helloworld">

    <wsdl:documentation>

    WSDL with an import example

    </wsdl:documentation>

    <wsdl:types>

    &lt;xs:import namespace="http://schemas.myorg.com/person/phone"
    
                schema Location= "http://www.myorg.com/supporting/schemas/helloworld.xsd"/&gt;
    
    
    
    &lt;xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    
      targetNamespace="http://schemas.myorg.com/wsdl/helloworld"&gt;
    
      &lt;xsd:element name="CallNumber" type="external:Phone"/&gt;
    
      &lt;xsd:element name="HelloResponse" type="xsd:string"/&gt;
    
    &lt;/xsd:schema&gt;
    

    </wsdl:types>

    <wsdl:interface name="helloInterface" >

    &lt;wsdl:operation name="CallMe"
    
      pattern="http://www.w3.org/ns/wsdl/in-out"
    
      style="http://www.w3.org/ns/wsdl/style/iri"&gt;
    
      &lt;wsdl:input message Label="In"
    
        element="hello World:CallNumber" /&gt;
    
      &lt;wsdl:output message Label="Out"
    
        element="hello World:HelloResponse" /&gt;
    
    &lt;/wsdl:operation&gt;
    

    </wsdl:interface>

    <wsdl:binding name="helloBinding"

    interface="hy:hello Interface"
    
    type="http://www.w3.org/ns/wsdl/soap"
    
    wsoap:protocol="http://www.w3.org/2003/05/soap/bindings/HTTP/"&gt;
    
    &lt;wsdl:operation ref="hy:Hello"
    
      wsoap:mep="http://www.w3.org/2003/05/soap/mep/soap-response"/&gt;
    

    </wsdl:binding>

    <wsdl:service name="helloService"

    interface="hy:hello Interface"&gt;
    
    &lt;wsdl:endpoint name="helloEndpoint"
    
      binding="hy:hello Binding"
    

    address="http://www.myorg.com/Service/Hello"/>

    </wsdl:service>

    </wsdl:description>

    This markup defines a WSDL that imports an external XML schema named "helloworld.xsd" which contains the namespace "http://schemas.myorg.com/person/phone."

    The import statement in the WSDL imports an XML namespace from a file. The primary purpose of the import element is to import the namespace, not to indicate where the declarations in the namespace can be found. The element includes the optional "schemaLocation" attribute. The attribute is optional because a namespace can be imported from the same file or be registered in another way. According the WSDL specification, "schemaLoction" is only a hint; an XML parser is free to ignore the location. If the parser already knows about the schema types in that namespace, or has another mechanism of finding them, it does not have to use the location. However, in many cases a namespace is imported that the XML parser knows nothing about, so the "schemaLocation" attribute becomes necessary, but technically it's still just a hint.

Tips and warnings

  • New technologies such as metadata exchange, MEX, have been introduced to share information about what capabilities a service supports, but these standards have not yet been widely adopted.
  • WSDLs support includes and imports. They may sound similar, but they behave differently. An import statement imports another namespace. An include statement imports XML data type declarations into an existing namespace.

Don't Miss

Filter:
  • All types
  • Articles
  • Slideshows
  • Videos
Sort:
  • Most relevant
  • Most popular
  • Most recent

No articles available

No slideshows available

No videos available

By using the eHow.co.uk site, you consent to the use of cookies. For more information, please see our Cookie policy.