TargetNamespace и пространство имен в WSDL

Я изучаю веб-сервисы SOAP, и я действительно новичок в веб-сервисах. В WSDL я немного запутался в отношении элемента targetNamespace в определении и namespace, включенного в xsd:schema.

<definitions .... targetNamespace=" " >

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

Что это означает под этими двумя элементами, и я просмотрел много статей в Интернете и не смог четко определить это. Кто-нибудь, пожалуйста, объясните мне?

Эти два получают одинаковые значения?

Ответы

Ответ 1

Целевое пространство имен в файле WSDL будет пространством имен, связанным с самой службой SOAP. Например, у нас есть обслуживание клиентов, пространство имен будет чем-то вроде http://www.acme.com/Customer/V1/CustomerService.

В разделе импорта XSD указано пространство имен XSD, которое вы собираетесь импортировать. Файл XSD будет содержать данные, которые служба отправит, т.е. Содержит определения объектов, которые будут сериализованы в XML и отправлены вверх и вниз в качестве запроса и ответов. XSD также может содержать операции, которые WSDL будет предоставлять.

WSDL может импортировать один или несколько файлов XSD, и каждый XSD будет иметь собственное пространство имен. XSD будет содержать пространство имен, например:

  • http://www.acme.com/Customer/V1/GetCustomerRequest для GetCustomerRequest это определит структуру данных операции GetCustomerRequest.
  • http://www.acme.com/Customer/V1/CustomerObject для CustomerObject это определит структуру данных объекта CustomerObject.

Пространства имен немного похожи на пакеты Java, они просто позволяют вам определять иерархию объектов. Важно понять, что у вас может быть два объекта Customer, принадлежащих вашей системе продажи, и один, который принадлежит вашей системе CRM, например. Поместив их в отдельные пространства имен, вы сможете использовать оба объекта Customer в одной службе, если они имеют уникальные пространства имен.

Обычно эти пространства имен также станут частью каталога SOA, и их определение будет частью ваших стандартов управления SOA. Они важны, если вы хотите успешно выполнить SOA.

Ответ 2

Я объясню использование Java-аналогии.

Пространство имен подобно пространству имен Java. Каждый элемент xml находится в пространстве имен. Предоставление targetNamespace означает, что все элементы (и типы), определенные внутри, находятся в этом пространстве имен. Это похоже на то, что все классы Java находятся внутри пакета.

Импортируемый xsd будет иметь свое собственное пространство имен задач, которое будет означать, что все элементы в xsd будут в определенном пространстве имен.

Импорт в wsdl похож на предоставление импорта java с указанием пакета.

Надеюсь, я понятен и полезен: D.

Ответ 3

targetNamespace - это "артефакт" XML-схемы. Определенные пользователем типы данных могут иметь конфликт имен при работе с другой командой. Этот атрибут элемента schema определяет пространство имен, т.е. пакет. По соглашению мы используем URI/URL, но мы можем использовать любую строку.

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

например:

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/"/>

Примечание: xsi:schemaLocation означает, что пространство имен и URL разделены пробелами. И xmlns:mvc означает пространство имен http://www.springframework.org/schema/mvc, определенное как псевдоним mvc.

Например: spring XML-схема beans имеет одинаковое targetNamespace для разных версий spring-beans.xsd. enter image description here

Пространство имен аналогия:

+---------+--------------------------------------------------------+------------------------------+------------------------+
| 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                   |
+---------+--------------------------------------------------------+------------------------------+------------------------+ 

для более подробной информации