Кажется, что вложенный элемент с настраиваемым определенным типом не работает в Visual Studio 2008. У меня есть следующий файл WSDL:WSDL: тип * не объявлен
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:ns1="http://org.apache.axis2/xsd"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:ns0="http://processmaker.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
targetNamespace="http://processmaker.com">
<wsdl:types>
<xs:element name="processListStruct" >
<xs:complexType >
<xs:sequence >
<xs:element name="guid" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="processListResponse" >
<xs:complexType >
<xs:sequence >
<xs:element name="processes" maxOccurs="unbounded" type="ns0:processListStruct"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</wsdl:types>
<!-- snip other definition -->
</wsdl:definitions>
Однако в Visual Studio я получил "type processListStruct не объявлена ошибка", когда я переместил мой курсор мыши по строке <xs:element name="processes" maxOccurs="unbounded" type="ns0:processListStruct"/>
. И, как я хотел, чтобы создать прокси-класс с помощью следующей команды,
wsdl /out:mycsclass.cs blahblah.wsdl
я получил ошибку о том, что
The datatype 'http://processmaker.com:processListStruct' is missing.
Как это исправить, и есть любой другой инструмент, кроме WSDL, который может успешно преобразовать вышеуказанный элемент?
Но wsdl должен иметь возможность различать элемент и тип, хотя они имеют одинаковое имя. – Graviton
Нет. Это не проблема WSDL. Схема XML просто плохая. Вы сказали type =, но это элемент. Это не одно и то же. –