targetNamespace et namespace dans WSDL

j'étudie les services web SOAP et je suis vraiment nouveau aux Services Web. Dans le WSDL j'ai eu un peu de confusion dans le targetNamespace élément dans la définition et l' namespace inclus dans le xsd:schema.

<definitions .... targetNamespace=" " >

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

qu'est-ce que cela signifie Ces deux éléments et j'ai cherché dans de nombreux articles sur le web et je n'ai pas été en mesure de l'identifier clairement. Quelqu'un peut-il svp m'expliquer?

ces deux obtenir les mêmes valeurs?

22
demandé sur giannis christofakis 2015-01-18 11:01:06

3 réponses

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 à la clientèle le namespace 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 noms de XSD que vous êtes sur le point d'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 en haut et en bas sous forme de requête et de réponses. Un XSD peut aussi contenir les opérations que la WSDL exposera.

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

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

Namespaces est un peu comme Paquets Java ils vous permettent simplement de définir une hiérarchie d'objets. Une chose importante à comprendre est que vous pourriez avoir deux objets de Client, l'un qui appartient à votre système de vente et qui appartiennent à votre système CRM par exemple. En plaçant ces derniers dans des espaces de noms séparés, vous pourrez utiliser les deux objets Clients dans le même service tant qu'ils ont des espaces de noms uniques.

normalement ces namespaces feront aussi partie du catalogue SOA et les définir fera partie vos normes de gouvernance SOA. Ils sont importants si vous voulez faire SOA avec succès.

19
répondu Namphibian 2015-01-18 23:52:44

je vais vous expliquer en utilisant L'analogie Java.

Namespace est comme Java namespace. Chaque élément xml est dans un espace de noms. Fournir un espace targetnam signifie que tous les éléments (et types) définis à l'intérieur de cet espace de noms sont dans cet espace de noms. C'est similaire au fait que toutes les classes Java sont dans le paquet.

le xsd importé aura son propre namespace cible, ce qui signifie que tous les éléments du xsd seront dans l'namespace défini.

l'importation dans le wsdl est comme fournir une importation java spécifiant le paquet.

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

10
répondu sashwat 2015-01-19 10:26:15

targetNamespace est un schéma XML "artefact".Les types de données définis par l'utilisateur peuvent donner lieu à des conflits de noms lorsque nous travaillons avec des équipes différentes. Ce un attribut de schema élément définit namespace c'est à dire package. Par convention nous utilisons URI / URLs, mais nous pouvons 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 noms et L'URL sont séparés par des espaces. Et xmlns:mvc moyenne de l'espace de noms http://www.springframework.org/schema/mvc définir mvc alias.

par exemple: au printemps, le schéma xml beans a le même espace targetnam pour différentes versions de spring-beans.xsd. enter image description here

namespace 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

6
répondu Premraj 2017-11-11 12:27:35