<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name="LibraryService"
    targetNamespace="http://example.com/library"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://example.com/library">

  <wsdl:documentation>Library SOAP service for catalog lookups and reservations.</wsdl:documentation>

  <wsdl:types>
    <xs:schema targetNamespace="http://example.com/library"
               xmlns:common="http://example.com/common"
               xmlns:lib="http://example.com/library">
      <xs:import namespace="http://example.com/common" schemaLocation="common-types.xsd"/>
      <xs:include schemaLocation="book-types.xsd"/>
    </xs:schema>
  </wsdl:types>

  <wsdl:message name="GetBookRequest">
    <wsdl:part name="parameters" element="tns:GetBookRequest"/>
  </wsdl:message>
  <wsdl:message name="GetBookResponse">
    <wsdl:part name="parameters" element="tns:GetBookResponse"/>
  </wsdl:message>
  <wsdl:message name="ReserveBookRequest">
    <wsdl:part name="parameters" element="tns:GetBookRequest"/>
  </wsdl:message>
  <wsdl:message name="ReserveBookResponse">
    <wsdl:part name="parameters" element="tns:GetBookResponse"/>
  </wsdl:message>

  <wsdl:portType name="LibraryPortType">
    <wsdl:operation name="GetBook">
      <wsdl:documentation>Fetch a book by its ISBN.</wsdl:documentation>
      <wsdl:input message="tns:GetBookRequest"/>
      <wsdl:output message="tns:GetBookResponse"/>
    </wsdl:operation>
    <wsdl:operation name="ReserveBook">
      <wsdl:documentation>Reserve an available copy of a book.</wsdl:documentation>
      <wsdl:input message="tns:ReserveBookRequest"/>
      <wsdl:output message="tns:ReserveBookResponse"/>
    </wsdl:operation>
  </wsdl:portType>

  <wsdl:binding name="LibraryBinding" type="tns:LibraryPortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="GetBook">
      <soap:operation soapAction="http://example.com/library/GetBook" style="document"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>
    <wsdl:operation name="ReserveBook">
      <soap:operation soapAction="http://example.com/library/ReserveBook" style="document"/>
      <wsdl:input><soap:body use="literal"/></wsdl:input>
      <wsdl:output><soap:body use="literal"/></wsdl:output>
    </wsdl:operation>
  </wsdl:binding>

  <wsdl:service name="LibraryService">
    <wsdl:port name="LibraryPort" binding="tns:LibraryBinding">
      <soap:address location="https://api.example.com/library/v1"/>
    </wsdl:port>
  </wsdl:service>

</wsdl:definitions>
