• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
Twitter Linkedin Instagram
S4PCADEMY_Logo
Twitter Linkedin Instagram
FORMACIÓN SAP

Cómo extraer XSD de un WSDL con múltiples definiciones de esquema

By s4pcademy 


Introducción

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.

    • XSD debe compartirse con un tercero, ya que su sistema solo acepta y funciona con XSD.
    • WSDL contiene demasiada información y, dado que SAP CI está interactuando entre el tercero y SAP, esta información no es necesaria en su extremo o debe abstraerse.
    • ¡Necesita hacer una validación XML en SAP CI que solo funciona en un esquema XSD y no acepta un WSDL!
    • Debe editar el esquema de manera que pueda realizar una asignación múltiple en él, por ejemplo.






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.

Solución

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.




Extracción de datos de SAP Integrated Business Planning (IBP) en SAP Signavio Process Intelligence a través del servicio Odata
Previo
Cree un flujo de notificación de uso de chispa de mensaje simple
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.