تشریح اسناد WSDL :

همانطور که در بخش قبل توضیح دادیم ، اسناد WSDL به زبان XML نوشته شده و به فرمت یک فایل XML نیز ذخیره می شوند .
این اسناد شامل بخش های مجزا و معینی هستند که هر کدام برای توضیح بخشی از وب سرویس به کار می رود :

ساختار کلی یک سند WSDL :

یک سند WSDL ، وب سرویس را به وسیله المنت های اصلی زیر تعریف می کند . شکل کلی یک سند WSDL در جدول دوم نشان داده شده است :

شرح نام بخش
این بخش ، تعیین کننده انواع داده ای است که وب سرویس  از آنها استفاده خواهد کرد . برای مثال  String . <types>
این بخش ، اطلاعات مربوط به یک تابع یا پارامترهای آن را درون خود تعریف می کند . <message>
این بخش از سند WSDL ، معمولا رویدادها ، توابع و کلاس هایی که متعلق به وب سرویس است را نگهداری می کند . <portType>
این بخش نیز ، فرمت داده ای یا پروتکلی که هر portType برای ارسال اطلاعات خود استفاده می کند را تعیین می کند . <binding>

ساختار کلی یک سند WSDL :

ساختار کلی
یک سند
WSDL
<definitions>

<types>
… لیست انواع داده های مورد استفاده وب سرویس
</types>

<message>
… پارامترها و داده های مربوط به توابع و رویدادهای وب سرویس
</message>

<portType>
… رویدادها و توابع مربوط به وب سرویس
</portType>

<binding>
… portType لیست پروتکل یا فرمت داده ای متعلق به هر
</binding>

</definitions>

هر سند WSDL ، می تواند شامل چندین بخش دیگر نیز باشد .

تشریح هر یک از بخش های WSDL به صورت کاملتر :

بخش <types> :

این بخش از سند ، انواع داده ای که سند WSDL می خواهد از آنها استفاده نماید را تعیین می کند ، برای مثال String .
برای سازگاری بهتر با انواع پلتفرم ها ، WSDL از XML Schema برای تعیین انواع داده ای استفاده می کند .

بخش <Message> :

این بخش از سند ، اطلاعات و پارامترهای مربوط به هر تابع یا رویداد وب سرویس ، را تعیین می کند .
هر message می تواند شامل یک یا چندین بخش باشد . اگر بخواهیم این بخش را با کدنویسی سنتی مقایسه نماییم ، همانند پارامترها و اطلاعاتی است که به توابع ارسال می شوند .

بخش <Ports> :

بخش Ports در یک سند WSDL ، مهمترین بخش آن به حساب می آید .
این بخش به طور کلی وب سرویس را تشریح کرده ، توابع و رویدادهای موجود در آن را تعیین می کند . همچنین شامل اطلاعات ارسالی نیز می شود . اگر بخواهیم بخش Ports را با کدنویسی معمولی مقایسه نماییم ، همانند لیست توابع ، کلاس ها ، پارامترها و … می باشد .

بخش <Biding> :

این بخش از سند ، نوع فرمت داده ای و پروتکلی که هر Port برای ارسال اطلاعات خود از آن استفاده می کند ، را تعیین می نماید . برای مثال ، یک Port از پروتکل SOAP استفاده می کند .

مثال عملی با تشریح :

مثال : در مثال زیر ، یک کد نمونه سند WSDL را به شما نمایش داده ایم . سپس به صورت کاملتر به تشریح بخش های مختلف آن پرداخته ایم :

مثال عملی
یک سند
WSDL
<definitions>

<message name=”getTermRequest”>
<part name=”term” type=”xs:string”/>
</message>

<message name=”getTermResponse”>
<part name=”value” type=”xs:string”/>
</message>

<portType name=”glossaryTerms”>
<operation name=”getTerm”>
<input message=”getTermRequest”/>
<output message=”getTermResponse”/>
</operation>
</portType>

</definitions>

در مثال فوق المنت <portType> ، المنت “glossaryTerms” را به عنوان یک Port یا پورت و “getTerm” را به عنوان یک Opretaion یا تابع تعیین می کند .
المنت “getTerm” یک پیام دریافتنی یا input message به نام “getTermRequest” و یک پیام خروجی output message به نام “getTermResponse” دارد .
دو المنت <message> ، به ترتیب دو مقدار و نوع داده ای را برای المنت های getTermRequest و getTermResponse را تعیین کرده اند .
اگر بخواهیم کد فوق را با روند برنامه نویسی معمولی مقایسه نماییم ، glossaryTerms یک کتابخانه رویداد ( تابع ) بوده و getTerm یک تابع می باشد ، که پیام getTermRequest را به عنوان پارامتر ورودی و پیام getTermResponse را به عنوان پارامتر خروجی دارد .