obtener - wsdl xsd examples
Referencia web de BizTalk: XSD generado ha perdido informaciĆ³n de WSDL (2)
¿Has intentado utilizar el adaptador WCF en lugar de "agregar referencia web" para hacer esto?
Aquí hay un ejemplo...
Estoy usando BizTalk 2006 R2 para generar una referencia web a partir de un archivo WSDL.
Comparando el XSD generado con el WSDL, es evidente que se ha perdido mucha información.
Considere el siguiente extracto 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>
El XSD equivalente que ha generado BizTalk es:
<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>
Entonces, el XSD ha perdido los patrones de restricción y ha establecido sus propios valores para minOccurs y maxOccurs.
Necesito hacer un mapa desde otra fuente hasta el XSD y deseo atrapar datos que no se ajustan al WSDL en esa etapa.
¿Alguien sabe por qué BizTalk no ha preservado las restricciones en el XSD; o cómo puedo generar XSD sin pérdida?
A menos que esté haciendo la validación de esquema en una interconexión de BizTalk, las restricciones y maxoccurs> 1 en realidad no van a hacer nada, no son utilizados por BizTalk en tiempo de ejecución. Supongo que esta es la razón por la cual la referencia web es con pérdida.
Personalmente, nunca me gustó la función ''agregar referencia web'', ni siquiera el ''agregar metadatos del adaptador'' / WCF. Si su wsdl está cambiando con tanta frecuencia, copiar manualmente las definiciones de tipo en un archivo xsd es demasiado trabajo:
a) busque construir una aplicación de consola simple para recuperar wsdl, extraer el tipo (s) y actualizar el archivo xsd (iniciarlo desde el menú Herramientas externas en VS), y
b) averigüe qué está yendo mal con su proceso de desarrollo que requiere cambios en los contratos de servicio con frecuencia.