2016-09-08 2 views
2

Требуется ли, чтобы каждая схема должна иметь уникальное пространство имен в wsdl? В качестве примера рассмотрим приведенный ниже фрагмент WSDL, который не имеет пространства имен для схем.Должно ли WSDL иметь уникальное пространство имен для каждой схемы

<wsdl:types> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:import namespace="http://example.com/WSDL/service/1.0.0/" schemaLocation="GetFilterValuesRequest.xsd"/> 
</xsd:schema> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:import namespace="http://example.com/WSDL/service/1.0.0/" schemaLocation="GetFilterValuesReply.xsd"/> 
</xsd:schema> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:import namespace="http://example.com/WSDL/service/1.0.0/" schemaLocation="IRequest.xsd"/> 
</xsd:schema> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <xsd:import namespace="http://example.com/WSDL/service/1.0.0/" schemaLocation="IReply.xsd"/> 
</xsd:schema> 
</wsdl:types> 

Причина Я спрашиваю потому, что я использую node-soap библиотеку для написания сервиса WSDL, а служба библиотеки не работает, когда есть либо конфликтующие пространства имен в схеме или нет имен вообще.

Приведено сообщение Cannot read property 'input' of undefined, когда отправляется запрос SOAP, поскольку он создает карту схем по их пространству имен, а затем не находит уникальную схему для данного запроса.

Я не хочу вдаваться в подробности ошибки или ее исправления, но хотел понять, что это необходимо для того, чтобы WSDL был действительным?

ответ

0

Да, для сервера SOAP требуются пространства имен для правильной работы с большинством клиентов.

Все ваши схемы находятся в одном и том же пространстве имен, поэтому, если у вас есть структуры данных с одинаковым именем, это будет проблемой.

Пространства имен в XML, как пространства имен в языках программирования. Они предотвращают столкновение однотипных типов данных друг с другом.

Обратите внимание, что пространство имен не должно быть URL-адресом. Это просто конвенция. Это может быть что угодно, просто нужно быть уникальным.

Смежные вопросы