WSDL (II) – wsdl:definitions

Esta entrada forma parte de la incursión en el interesante mundo del WSDL, comenzada en la entrada WSDL(I) – Introducción. El WSDL es conocida como la especificación estándar que permite detallar el contenido de un servicio web mediante XML. En esta entrada detallo el elemento wsdl:definitions, que es el elemento principal en la definición de un servicio web y es el primero que se aborda.

Descripción

Wsdl:definitions es el elemento raíz de todo WSDL.

En él se incluye toda la información necesaria para describir el servicio web; las operaciones que publica el servicio web, los tipos de datos que se utilizan en las operaciones, los tipos de binding dependiendo del protocolo que se utiliza en la llamada al servicio web y la url en la que es publicado y a la que se debe llamar para invocarlo. 

Gramática

La gramática completa del elemento definitions es la siguiente (? –> campo opcional; * –> 0 a N campos): 

<wsdl:definitions name="nmtoken"? targetNamespace="uri"?>

    <import namespace="uri" location="uri"/>*

    <wsdl:documentation .... /> ?

    <wsdl:types> ?
        <wsdl:documentation .... />?
        <xsd:schema .... />*
        <-- extensibility element --> *
    </wsdl:types>

    <wsdl:message name="nmtoken"> *
        <wsdl:documentation .... />?
        <part name="nmtoken" element="qname"? type="qname"?/> *
    </wsdl:message>

    <wsdl:portType name="nmtoken">*
        <wsdl:documentation .... />?
        <wsdl:operation name="nmtoken">*
           <wsdl:documentation .... /> ?
           <wsdl:input name="nmtoken"? message="qname">?
               <wsdl:documentation .... /> ?
           </wsdl:input>
           <wsdl:output name="nmtoken"? message="qname">?
               <wsdl:documentation .... /> ?
           </wsdl:output>
           <wsdl:fault name="nmtoken" message="qname"> *
               <wsdl:documentation .... /> ?
           </wsdl:fault>
        </wsdl:operation>
    </wsdl:portType>

    <wsdl:binding name="nmtoken" type="qname">*
        <wsdl:documentation .... />?
        <-- extensibility element --> *
        <wsdl:operation name="nmtoken">*
           <wsdl:documentation .... /> ?
           <-- extensibility element --> *
           <wsdl:input> ?
               <wsdl:documentation .... /> ?
               <-- extensibility element -->
           </wsdl:input>
           <wsdl:output> ?
               <wsdl:documentation .... /> ?
               <-- extensibility element --> *
           </wsdl:output>
           <wsdl:fault name="nmtoken"> *
               <wsdl:documentation .... /> ?
               <-- extensibility element --> *
           </wsdl:fault>
        </wsdl:operation>
    </wsdl:binding>

    <wsdl:service name="nmtoken"> *
        <wsdl:documentation .... />?
        <wsdl:port name="nmtoken" binding="qname"> *
           <wsdl:documentation .... /> ?
           <-- extensibility element -->
        </wsdl:port>
        <-- extensibility element -->
    </wsdl:service>

    <-- extensibility element --> *

</wsdl:definitions>

 

Atributos

El elemento wsdl:definitions contiene los siguientes atributos:

  • name. Este atributo es el nombre del servicio web. Conviene que este nombre sea el mismo que el nombre utilizado en el apartado wsdl:service.
  • targetNamespace. Este atributo permite al WSDL referirse a si mismo y establecer los namespaces que se usan en la descripción. La URI que se da para definir el namespace propio no tiene porque existir, basta con que sea un valor único y diferente a los otros namespaces definidos. Además, la URI no puede ser una ruta relativa. 

Subelementos.

Los subelementos de wsdl:definitions contienen la descripción completa del servicio web. Dada su importancia y para organizar mejor este conocimiento, estos subelementos los iré comentando en sus propias entradas.
 

Ejemplo básico.

A continuación se muestra un ejemplo básico de un elemento wsdl:definitions que se utiliza en el servicio web AsistenteProductoSW.
<wsdl:definitions 
name="AsistenteProductoSW"
targetNamespace="
http://VDM/wsdls/AsistenteProductoWSDL"
xmlns:asp="http://VDM/esquemas/asistenteproducto"
xmlns:ns1="http://cxf.apache.org/bindings/xformat"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://VDM/wsdls/AsistenteProductoWSDL"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Del ejemplo se pueden deducir varias cosas:

Deja un comentario