web-dev-qa-db-fra.com

targetNamespace et namespace dans WSDL

J'étudie les services Web SOAP et je suis vraiment novice dans les services Web. Dans le WSDL, je suis un peu confus en ce qui concerne l'élément targetNamespace de la définition et le namespace inclus dans le xsd:schema.

<definitions .... targetNamespace=" " >

<xsd:schema>
<xsd:import namespace=" " schemaLocation=""/>
</xsd:schema>

Qu'est-ce que cela signifie par ces deux éléments et j'ai cherché dans de nombreux articles sur le Web et je n'ai pas pu l'identifier clairement. Quelqu'un peut-il m'expliquer s'il vous plaît?

Ces deux valeurs ont-elles les mêmes valeurs?

27
Dilan

L'espace de nom cible dans le fichier WSDL sera l'espace de nom associé au service SOAP lui-même. Par exemple, nous avons un service client, l'espace de nom serait quelque chose comme http://www.acme.com/Customer/V1/CustomerService.

La section des importations XSD est l'endroit où vous spécifiez l'espace de nom du XSD que vous allez importer. Un fichier XSD contiendra les données que le service enverra, c'est-à-dire qu'il contiendra les définitions d'objet qui seront sérialisées en XML et envoyées de haut en bas en tant que demande et réponses. Un fichier XSD peut également contenir les opérations que le WSDL exposera.

Un WSDL peut importer un ou plusieurs fichiers XSD et chaque XSD aura son propre espace de noms. Un XSD contiendra un espace de noms tel que:

  1. http://www.acme.com/Customer/V1/GetCustomerRequest pour GetCustomerRequest, cela définira la structure de données de l'opération GetCustomerRequest.
  2. http://www.acme.com/Customer/V1/CustomerObject pour CustomerObject, cela définira la structure de données de CustomerObject.

Les espaces de noms ressemblent un peu aux packages Java). Ils vous permettent simplement de définir une hiérarchie d'objets. Une chose importante à comprendre est que vous pouvez avoir deux objets Client, l'un appartenant à votre système de vente et l'autre appartenir à votre système CRM, par exemple: en les plaçant dans des espaces de noms distincts, vous pourrez utiliser les deux objets Client dans le même service, à condition qu'ils disposent d'espaces de noms uniques.

Normalement, ces espaces de noms feront partie du catalogue SOA) et leur définition fera partie de vos normes de gouvernance SOA. Ils sont importants si vous souhaitez le faire. SOA avec succès.

25
Namphibian

Je vais expliquer en utilisant l'analogie Java.

L'espace de noms ressemble à Java. Chaque élément xml se trouve dans un espace de noms. Fournir un targetNamespace signifie que tous les éléments (et types) définis dans cet espace de noms sont identiques à ceux-ci Java sont dans le package.

Le xsd importé aura son propre espace de noms cible, ce qui signifie que tous les éléments du xsd seront dans l'espace de noms défini.

L'importation dans le fichier WSDL revient à fournir une importation Java) spécifiant le package.

J'espère que je suis clair et utile: D.

12
sashwat

targetNamespace est un "artefact" de schéma XML . . Types de données définis par l'utilisateur peut avoir la possibilité des conflits de noms lorsque nous travaillons avec une équipe différente. Ceci est un attribut de l’élément schema qui définit l’espace de nommage , c’est-à-dire le package. Par convention, nous utilisons URI/URL, mais nous pourrions utiliser n’importe quelle chaîne.

<?xml version="1.0" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                      targetNamespace="namespace">
        ...
</xs:schema>

par exemple:

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/beans/spring-mvc.xsd" xmlns:mvc="http://www.springframework.org/schema/mvc"
  //  or if the schema  exist in current directory we can declare as follows
xsi:schemaLocation="http://www.springframework.org/schema/mvc spring-mvc.xsd" xmlns:mvc="http://www.springframework.org/schema/mvc"
 //for import xml schema
<xsd:import schemaLocation="http://localhost:9999/ws/hello?xsd=1" namespace="http://ws.peter.com/"/>

Remarque: xsi:schemaLocation signifie que l’espace de nom et l’URL sont séparés par des espaces. Et xmlns:mvc signifie l'espace de noms http://www.springframework.org/schema/mvc définissez comme mvc alias.

Par exemple: Au printemps, le schéma xml de beans a le même targetNamespace pour différentes versions de spring-beans.xsd. enter image description here

espace de noms analogie:

+---------+--------------------------------------------------------+------------------------------+------------------------+
| Context |                          Name                          |     Namespace identifier     |       Local name       |
+---------+--------------------------------------------------------+------------------------------+------------------------+
| Path    | /home/user/readme.txt                                  | /home/user (path)            | readme.txt (file name) |
| XML     | xmlns:xhtml="http://www.w3.org/1999/xhtml"<xhtml:body> | http://www.w3.org/1999/xhtml | body                   |
| Java    | Java.util.Date                                         | Java.util                    | Date                   |
+---------+--------------------------------------------------------+------------------------------+------------------------+ 

pour plus de détails

8
Premraj