Sto utilizzando BizTalk 2006 R2 per generare un riferimento Web da un file WSDL.Riferimento Web BizTalk - XSD generato ha informazioni "perse" dal WSDL
Confrontando l'XSD generato con il WSDL, è evidente che molte informazioni sono andate perse.
Si consideri il seguente estratto del 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>
Il XSD equivalente che BizTalk ha generato è:
<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>
Così, il XSD ha perso i profili di restrizione e ha stabilito i propri valori per minOccurs e maxOccurs.
Ho bisogno di mappare da un'altra fonte all'XSD e desidero intercettare i dati che non sono conformi al WSDL in quella fase.
Qualcuno sa perché BizTalk non ha conservato le restrizioni nell'XSD; o come posso generare XSD non-lossy?
L'utilizzo di Xsd.exe produce gli stessi risultati? – TEEKAY
Grazie per il suggerimento, TEEKAY. Quando ho indicato xsd.exe nel file WSDL: xsd.exe "C: \ Demos \ MyProblem.wsdl"/o: "C: \ Demos" Ho ricevuto l'errore "Errore: argomento della riga di comando non valido:" C: \ Demos \ MyProblem.wsdl '" Quindi ho modificato l'estensione del file per provare a ingannare xsd.exe: xsd.exe" C: \ Demos \ MyProblem.xsd "/ o:" C: \ Demos " E ho ricevuto l'errore: "Errore: può generare solo una delle classi o dei set di dati." Grazie comunque per il suggerimento. –