我似乎无法使用 PHP SoapServer 让 XSD 元素在我的 wsdl 中工作。根据我所阅读的所有内容,并了解其他几家公司如何实现“松散类型”wsdls。以下内容应该足以检索和发送记录信息。
<complexType name="Record">
<sequence>
<any namespace="##targetNamespace" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</sequence>
</complexType>
不幸的是,似乎 php SoapServer 类丢弃了任何未严格定义的元素。我得到的是创建请求上的空记录并在检索/过滤请求上发送空记录,尽管在 SoapServer 处理之前这些字段显然就在那里。
如果我像这样专门定义缺少的字段...
<complexType name="Record">
<sequence>
<element name="FirstName" type="xsd:string" minOccurs="0"/>
<element name="LastName" type="xsd:string" minOccurs="0"/>
<any namespace="##targetNamespace" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</sequence>
</complexType>
那么一切都很好,这些字段会传递给客户端/从客户端传递。我错过了什么吗?我已经尝试了所有命名空间选项##any、##local 等以及 processContents 选项。我只想能够发送/返回记录的额外字段,无论它们是否在模式中详细说明。