Я использую некоторые веб-сервисы, написанные с использованием мыла.
Некоторые веб-службы работают, однако те, которые пытаются импортировать локальный xsd, не работают
<faultcode>WSDL</faultcode>
<faultstring>
SOAP-ERROR: Parsing Schema: can't import schema from 'http://localhost/myproject/_xsd/1'
</faultstring>
Ниже приводится выдержка из моего WSDL
<definitions
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"xmlns:wsp="http://www.w3.org/ns/ws-policy"xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy"xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:tns="http://ws.platform.commersite.com/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns="http://schemas.xmlsoap.org/wsdl/"targetNamespace="http://ws.platform.commersite.com/"name="PlatformControllerWSService">
<types>
<xsd:schema>
<xsd:import
namespace="http://mysite/"schemaLocation="http://localhost/myproject/1" />
</xsd:schema>
<xsd:schema>
<xsd:import
namespace="http://somesite/"schemaLocation="http://localhost/myproject/_xsd/2" />
</xsd:schema>
</types>
Загрузка файлов xsd идет в функцию php
public function _xsdAction($xsd) {
$this->response->setHeader("Content-Type", "text/xml");
$this->view->pick('server/_xsd' . $xsd);
$this->view->setVars(array(
'param1' => Server::config('param1'),
'param2' => Server::config('param2'),
));
}
Также стоит отметить, что xsd1 импортирует xsd2
<xs:import namespace="{{ param1 }}" schemaLocation="{{ param2 }}xsd/2"/>
Я не уверен, что проблема может быть. Любая помощь будет оценена
Решено!
Проблема заключалась в том, что путь, используемый для поиска файла xsd, был неверным, поскольку он уже входил в папку / myproject / и не требовал от меня добавления местоположения / myproject / вручную.
Других решений пока нет …