J'utilise BizTalk 2006 R2 pour générer une référence Web à partir d'un fichier WSDL. En comparant la XSD générée au WSDL, il est évident que beaucoup d'informations ont été perdues.BizTalk Web Reference - généré XSD a «perdu» des informations de WSDL
Tenir compte de l'extrait suivant du 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>
Le XSD équivalent BizTalk a généré est:
<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>
Ainsi, le XSD a perdu les motifs de restriction et a fixé ses propres valeurs pour minOccurs et maxOccurs.
J'ai besoin de mapper d'une autre source au XSD et je souhaite piéger des données qui ne sont pas conformes au WSDL à ce stade.
Est-ce que quelqu'un sait pourquoi BizTalk n'a pas conservé les restrictions dans le XSD; ou comment je peux générer XSD non-lossy?
L'utilisation de Xsd.exe produit-elle les mêmes résultats? – TEEKAY
Merci pour la suggestion, TEEKAY. Lorsque j'ai pointé xsd.exe sur le fichier WSDL: xsd.exe "C: \ Demos \ MyProblem.wsdl"/o: "C: \ Demos" J'ai l'erreur "Erreur: argument de ligne de commande non valide: ' C: \ Demos \ MyProblem.wsdl '" Puis j'ai changé l'extension de fichier pour essayer de tromper xsd.exe: xsd.exe" C: \ Demos \ MyProblem.xsd "/ o:" C: \ Demos " Et j'ai l'erreur: "Erreur: Peut seulement générer une des classes ou ensembles de données." Merci pour la suggestion quand même. –