Кажется, что предикат парсера wsdl останавливается после открытия включения файла wsd. Включение находится внутри раздела типов.
import com.predic8.wsdl. *; // Я использую XML-парсер
Я вижу это, потому что это работает, когда я помещаю раздел типов в конец документа wsdl:
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:sch="com.xxxsys.webservices" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="com.xxxsys.webservices" targetNamespace="com.xxxsys.webservices">
<wsdl:message name="createMandateResponse">
<wsdl:part element="tns:createMandateResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="createMandateRequest">
<wsdl:part element="tns:createMandate" name="parameters"/>
</wsdl:message>
<wsdl:message name="checkMandateResponse">
<wsdl:part element="tns:checkMandateResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="checkMandateRequest">
<wsdl:part element="tns:checkMandate" name="parameters"/>
</wsdl:message>
<wsdl:message name="availableResponse">
<wsdl:part element="tns:availableResponse" name="parameters"/>
</wsdl:message>
<wsdl:message name="availableRequest">
<wsdl:part element="tns:available" name="parameters"/>
</wsdl:message>
<!--
<wsdl:message name="GeneralFault">
<wsdl:part element="tns:GeneralFault" name="fault"/>
</wsdl:message>
-->
<wsdl:portType name="DMSPort">
<wsdl:operation name="createMandate">
<wsdl:input message="tns:createMandateRequest" name="createMandateRequest" />
<wsdl:output message="tns:createMandateResponse" name="createMandateResponse"/>
<!--<wsdl:fault message="tns:GeneralFault" name="GeneralFault" />-->
</wsdl:operation>
<wsdl:operation name="checkMandate">
<wsdl:input message="tns:checkMandateRequest" name="checkMandateRequest" />
<wsdl:output message="tns:checkMandateResponse" name="checkMandateResponse"/>
<!--<wsdl:fault message="tns:GeneralFault" name="GeneralFault" />-->
</wsdl:operation>
<wsdl:operation name="available">
<wsdl:input message="tns:availableRequest" name="availableRequest" />
<wsdl:output message="tns:availableResponse" name="availableResponse"/>
<!--<wsdl:fault message="tns:GeneralFault" name="GeneralFault" />-->
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="DMSPortSoap11" type="tns:DMSPort">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="createMandate">
<soap:operation soapAction=""/>
<wsdl:input name="createMandateRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="createMandateResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="checkMandate">
<soap:operation soapAction=""/>
<wsdl:input name="checkMandateRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="checkMandateResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="available">
<soap:operation soapAction=""/>
<wsdl:input name="availableRequest">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="availableResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="DMSService">
<wsdl:port binding="tns:DMSPortSoap11" name="DMSPortSoap11">
<soap:address location="http://localhost:8481/ws"/>
</wsdl:port>
</wsdl:service>
<wsdl:types>
<!-- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="com.xxxsys.webservices">
<!-- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="com.xxxsys.webservices" targetNamespace="com.xxxsys.webservices" elementFormDefault="qualified">-->
<!-- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="com.xxxsys.webservices">-->
<include schemaLocation="DMS.xsd"/>
<!--<import namespace="com.xxxsys.webservices" schemaLocation="DMS.xsd"/>-->
</xs:schema>
</wsdl:types>
Файл xsd выглядит так:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns="com.xxxsys.webservices"
targetNamespace="com.xxxsys.webservices" elementFormDefault="qualified">
<xs:element name="createMandate">
<xs:complexType>
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="birthdate" type="xs:date"/>
<xs:element name="iban" type="xs:string"/>
<xs:element name="bic" type="xs:string"/>
<xs:element name="newcustomer" type="xs:boolean"/>
<xs:element name="templateid" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="createMandateResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="mandatestatus" type="xs:string"/>
<xs:element name="mandateid" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="checkMandate">
<xs:complexType>
<xs:sequence>
<xs:element name="mandateid" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="checkMandateResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="mandatestatus" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="available">
<xs:complexType>
<xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="availableResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="isAvailable" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GeneralFault">
<xs:complexType>
<xs:sequence>
<xs:element name="message" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Я бы хотел иметь возможность обрабатывать wsdl-файлы с разделом типов с включением вверху. И, таким образом, верните обратно файл wsdl, чтобы он стал нормальным.