Używam BizTalk 2006 R2 do generowania odwołania do stron WWW z pliku WSDL.BizTalk Web Reference - wygenerowany XSD ma "utracone" informacje z WSDL
Porównując wygenerowany XSD do WSDL, widać, że wiele informacji zostało utraconych.
Rozważmy następujący wyciąg z WSDL:
<s:element form="unqualified" minOccurs="0" maxOccurs="4" name="Applicant">
<s:complexType>
<s:sequence>
<s:element form="unqualified" minOccurs="1" maxOccurs="1" name="ApplicantIdentifier">
<s:simpleType>
<s:restriction base="s:string" />
</s:simpleType>
</s:element>
<s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Name">
<s:complexType>
<s:sequence>
<s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Title">
<s:simpleType>
<s:restriction base="s:string">
<s:maxLength value="10" />
</s:restriction>
</s:simpleType>
</s:element>
<s:element form="unqualified" minOccurs="0" maxOccurs="1" name="Forename">
<s:simpleType>
<s:restriction base="s:string">
<s:pattern value="[0-9A-Za-z \-]*" />
<s:maxLength value="15" />
<s:minLength value="1" />
</s:restriction>
</s:simpleType>
</s:element>
<!-- more -->
</s:sequence>
</s:complexType>
</s:element>
</s:sequence>
</s:complexType>
</s:element>
Równowartość XSD które BizTalk wygenerował jest:
<xs:element minOccurs="0" maxOccurs="unbounded" form="unqualified" name="Applicant">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="ApplicantIdentifier" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Name">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Title" type="xs:string" />
<xs:element minOccurs="0" maxOccurs="1" form="unqualified" name="Forename" type="xs:string" />
<!-- more -->
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Tak, XSD traci wzory restrykcyjne i ustawił swoje wartości dla minOccurs i maxOccurs.
Muszę mapować z innego źródła do XSD i chcę pułapkę danych, które nie są zgodne z WSDL na tym etapie.
Czy ktoś wie, dlaczego BizTalk nie zachował ograniczeń w XSD; lub jak mogę wygenerować niestratny XSD?
Czy używanie Xsd.exe daje takie same wyniki? – TEEKAY
Dziękuję za sugestię, TEEKAY. Kiedy wskazałem plik xsd.exe w pliku WSDL: xsd.exe "C: \ Demos \ MyProblem.wsdl"/o: "C: \ Demos" Wystąpił błąd "Błąd: nieprawidłowy argument wiersza poleceń:" C: \ Demos \ MyProblem.wsdl '" Następnie zmieniłem rozszerzenie pliku, aby spróbować oszukać xsd.exe: xsd.exe" C: \ Demos \ MyProblem.xsd "/ o:" C: \ Demos " I mam błąd: "Błąd: może wygenerować tylko jedną z klas lub zestawów danych." Dzięki za sugestię. –