I have a WSDL (ProblemReportService.wsdl) that is defined as follows: <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://localhost/ProblemReportService.wsdl" xmlns:ha1="http://localhost/ProblemReport.xsd" name="ProblemReportService" targetNamespace="http://localhost/ProblemReportService.wsdl"> <wsdl:types> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:ha1="http://localhost/ProblemReport.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:import namespace="http://localhost/ProblemReport.xsd" schemaLocation="ProblemReport.xsd"/> <xs:import namespace="http://localhost/dropdownvalues.xsd" schemaLocation="dropdownvalues.xsd"/> </xs:schema> </wsdl:types> <wsdl:message name="NewProblemReportRequest"> <wsdl:part name="request" element="ha1:ProblemReport"/> </wsdl:message> <wsdl:message name="ProblemReportResponse"> <wsdl:part name="parameter" type="xs:string"/> </wsdl:message> <wsdl:portType name="ProblemReportPortType"> <wsdl:operation name="submitProblemReport"> <wsdl:input message="tns:NewProblemReportRequest"/> <wsdl:output message="tns:ProblemReportResponse"/> </wsdl:operation> </wsdl:portType> .. I've created an xml file (ProblemReport.xml) that validates to ProblemReport.xsd. I now have a SOAP Client php file that needs to send this request to the SOAP Server, how would I write the client and server side in php? Client: try { $client = new SoapClient("ProblemReportService.wsdl", array('soap_version' => SOAP_1_1,'trace' => 1 )); // How would I define $request from the contents of ProblemReport.xml file? $return = $client->__soapCall("submitProblemReport", $request); } catch (SoapFault $fault) { trigger_error("SOAP Fault: (faultcode: {$fault->faultcode}, faultstring: {$fault->faultstring})", E_USER_ERROR); } Server: ini_set("soap.wsdl_cache_enabled", "0"); $server = new SoapServer("http://localhost/ProblemReportService.wsdl", array('soap_version' => SOAP_1_1)); $server->addFunction("submitProblemReport"); $server->handle(); function submitProblemReport($problem) { // How can I validate the $problem against a XSD schema? // and how can I unmarshal the $problem to access the data contained within the original xml file? } Any assistance appreciated. Thanks, Brendan