>> Technologie Électronique >  >> Maison intelligente >> Vie connectée

Comment importer un schéma XSD dans un WSDL

Le WSDL (Web Services Description Language) est un format XML pour décrire des services web. Un consommateur peut localiser un service et exécuter ses opérations. Ce processus peut être automatisé avec la plupart des outils de développement, facilitant l'intégration d'applications. Les WSDL définissent un contrat entre fournisseur et consommateur, rendant le service auto-descriptif : opérations publiques, types de données, liaisons de protocole et adresses. L'élément « import » permet d'importer des WSDL ou schémas XML externes, ce qui favorise la modularité, la réutilisation de types de données entre plusieurs définitions de service et la gestion de multiples versions d'un schéma.

Étape 1

Créez un nouveau fichier dans votre éditeur de texte ou XML. Si l'éditeur supporte le WSDL, choisissez ce type ; sinon, choisissez XML ou texte brut.

Étape 2

Nommez le fichier comme vous le souhaitez avec l'extension « .wsdl » (ex. : « HelloWorld.wsdl »).

Étape 3

Créez un second fichier pour le schéma XML. Choisissez « Schéma XML » ou « XSD » si supporté, sinon XML ou texte brut.

Étape 4

Nommez ce fichier avec l'extension « .xsd » (ex. : « HelloWorld.xsd »).

Étape 5

Insérez le balisage suivant dans le fichier XSD :

<?xml version="1.0"?>
<xsd:schema targetNamespace="https://schemas.myorg.com/person/phone" xmlns:xsd="https://www.w3.org/2001/XMLSchema">
  <xsd:import namespace="https://www.w3.org/2001/XMLSchema"/>
  <xsd:complexType name="Phone">
    <xsd:sequence>
      <xsd:element name="areaCode" type="xsd:int"/>
      <xsd:element name="exchange" type="xsd:int"/>
      <xsd:element name="number" type="xsd:int"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:schema>

Ce schéma définit l'espace de noms « https://schemas.myorg.com/person/phone » et un type unique « Phone ».

Étape 6

Insérez le balisage suivant dans le fichier WSDL :

<?xml version="1.0"?>
<wsdl:description xmlns:wsdl="https://www.w3.org/ns/wsdl"
                  xmlns:wsoap="https://www.w3.org/ns/wsdl/soap"
                  xmlns:external="https://schemas.myorg.com/person/phone"
                  xmlns:helloWorld="https://schemas.myorg.com/wsdl/helloworld"
                  targetNamespace="https://schemas.myorg.com/wsdl/helloworld">
  <wsdl:documentation>WSDL with an import example</wsdl:documentation>
  <wsdl:types>
    <xs:import namespace="https://schemas.myorg.com/person/phone"
               schemaLocation="https://www.myorg.com/supporting/schemas/helloworld.xsd"/>
  </wsdl:types>
  <xsd:schema xmlns:xsd="https://www.w3.org/2001/XMLSchema"
              targetNamespace="https://schemas.myorg.com/wsdl/helloworld">
    <xsd:element name="CallNumber" type="external:Phone"/>
    <xsd:element name="HelloResponse" type="xsd:string"/>
  </xsd:schema>
  <wsdl:interface name="helloInterface">
    <wsdl:operation name="CallMe" pattern="https://www.w3.org/ns/wsdl/in-out"
                    style="https://www.w3.org/ns/wsdl/style/iri">
      <wsdl:input messageLabel="In" element="helloWorld:CallNumber"/>
      <wsdl:output messageLabel="Out" element="helloWorld:HelloResponse"/>
    </wsdl:operation>
  </wsdl:interface>
  <wsdl:binding name="helloBinding" interface="helloInterface"
                type="https://www.w3.org/ns/wsdl/soap"
                wsoap:protocol="https://www.w3.org/2003/05/soap/bindings/HTTP/">
    <wsdl:operation ref="helloInterface:CallMe"
                    wsoap:mep="https://www.w3.org/2003/05/soap/mep/soap-response"/>
  </wsdl:binding>
  <wsdl:service name="helloService" interface="helloInterface">
    <wsdl:endpoint name="helloEndpoint" binding="helloBinding"
                   address="https://www.myorg.com/Service/Hello"/>
  </wsdl:service>
</wsdl:description>

Ce WSDL importe le schéma XML externe « helloworld.xsd » contenant l'espace de noms « https://schemas.myorg.com/person/phone ». L'instruction « import » importe l'espace de noms, l'attribut optionnel « schemaLocation » n'étant qu'une indication pour le parseur XML.

Astuce

De nouvelles technologies comme l'échange de métadonnées (MEX) permettent de partager les capacités d'un service, mais ne sont pas encore largement adoptées.

Avertissement

WSDL distingue « import » (importe un autre espace de noms) et « include » (importe des déclarations de types dans l'espace de noms existant). Ne les confondez pas.

Vie connectée