2009-06-25 2 views
0

Кажется, что вложенный элемент с настраиваемым определенным типом не работает в 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, который может успешно преобразовать вышеуказанный элемент?

ответ

0

Как ответил Microsoft, это не Wsdl.exe ошибка, это ошибка в схеме:

<xs:element name="processes" maxOccurs="unbounded" type="ns0:processListStruct"/> 

Тем не менее, как мы можем видеть:

<xs:element name="processListStruct" > 

processListStruct является элементом, не тип.

+0

Но wsdl должен иметь возможность различать элемент и тип, хотя они имеют одинаковое имя. – Graviton

+0

Нет. Это не проблема WSDL. Схема XML просто плохая. Вы сказали type =, но это элемент. Это не одно и то же. –

Смежные вопросы