2016-09-08 1 views
2

각 스키마가 wsdl에서 고유 한 네임 스페이스를 가져야합니다. 예를 들어 스키마에 대한 네임 스페이스가없는 아래의 WSDL 스 니펫을 고려하십시오. 나는 WSDL 서비스를 작성하기위한 node-soap 라이브러리를 사용하고, 충돌하는 스키마의 네임 스페이스 또는 전혀 네임 스페이스 하나가있을 때 도서관 서비스가 작동하지 않습니다, 때문에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> 

내가 요구하고있는 이유입니다.

SOAP 요청을 보낼 때 Cannot read property 'input' of undefined이라는 오류가 발생합니다. SOAP 요청이 보내지면 해당 네임 스페이스별로 스키마 맵을 작성한 다음 나중에 해당 요청에 대한 고유 스키마를 찾지 못합니다.

오류나 수정 사항에 대해 자세히 설명하고 싶지 않지만 WSDL이 유효한 것이기 때문에 필요한 부분인지 이해하고 싶습니까?

답변

0

SOAP 서버가 대부분의 클라이언트에서 올바르게 작동하려면 네임 스페이스가 필요합니다.

스키마가 모두 동일한 네임 스페이스에 있으므로 동일한 이름으로 정의 된 데이터 구조가있는 경우이 문제가 발생합니다.

XML의 네임 스페이스는 프로그래밍 언어의 네임 스페이스와 같습니다. 동일한 이름의 데이터 유형이 서로 충돌하는 것을 방지합니다.

네임 스페이스가 URL 일 필요는 없습니다. 그건 단지 대회 일뿐입니다. 그것은 무엇이든 될 수 있으며, 단지 그것이 유일 할 필요가 있습니다.