Como consultor de integración, me encuentro con escenarios en los que tengo a mano un WSDL complejo con estructuras profundamente anidadas y múltiples definiciones de esquema como la siguiente para la replicación de socios comerciales.
Trabajar con WSDL es bueno y genial hasta que se encuentra con un requisito en el que tiene que extraer el XSD del WSDL y trabajar en eso. Puede haber varias razones por las que puede necesitar extraer el XSD del WSDL, algunas de las cuales enfrenté están a continuación.
En todos estos casos, trabajar en un WSDL directamente y actualizarlo es una pesadilla, al igual que tratar de extraer los esquemas manualmente. A veces, los archivos WSDL tienen fácilmente más de 10000 líneas, lo que hace que sea imposible hacerlo manualmente sin cometer errores.
Además, ¿qué sucede si desea un esquema sin ningún prefijo de espacio de nombres? Eliminando todas las declaraciones y espacios de nombres y también asegurándose de manejar definiciones de tipo complejo donde el nombre es el mismo para diferentes definiciones de tipo complejo como una tarea en sí misma.
Por ejemplo, mire las dos definiciones de «Texto» de tipo complejo a continuación, ambas están tomadas del mismo WSDL pero de diferentes esquemas.
<xsd:complexType name="Text">
<xsd:sequence>
<xsd:element name="BuyerTextElementID" minOccurs="0" type="TextElement"/>
<xsd:element name="SupplierTextElementID" minOccurs="0" type="TextElement"/>
<xsd:element name="TextElementLanguage" minOccurs="0" type="LanguageCode"/>
<xsd:element name="TextElementText" minOccurs="0" type="TextElementText"/>
<xsd:element name="TextElementTextFormat" minOccurs="0" type="TextElementTextFormat"/>
</xsd:sequence>
<xsd:attribute name="Type" type="TextType"/>
</xsd:complexType>
And
<xsd:complexType name="Text">
<xsd:annotation>
<xsd:documentation xml:lang="EN">
<ccts:RepresentationTerm>Text</ccts:RepresentationTerm>
</xsd:documentation>
</xsd:annotation>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="languageCode" type="LanguageCode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
Si solo copia y pega todos los nodos del esquema en un solo archivo, tendrá declaraciones de espacios de nombres en conflicto, tipos duplicados espejo y tipos duplicados con diferentes definiciones y muchas definiciones WSDL de las que ocuparse. Trabajar en un WSDL pequeño es fácil, pero cuando se trata de WSDL grandes como el de SAP, no es una tarea fácil.
Desarrollé una solución para este mismo problema y la he implementado para uso gratuito en Utility Arena.
Permítame demostrarle lo fácil que es extraer un XSD de un WSDL complejo o reparar un WSDL dañado (un WSDL sin ningún prefijo de esquema como los de salesforce, SAP CI no los acepta tal cual).
Vaya al enlace de arriba y cargue su WSDL o pegue el contenido de WSDL en el área de texto.
Haga clic en Extraer XSD y luego tendrá su XSD extraído listo para descargar.
Y con solo unos pocos clics, tendrá su SXSD extraído de un WSDL en segundos.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073