phpxmlrpc/schemas

一组扩展、插件和其他可能对开发基于xml-rpc(以及jsonrpc、soap)的应用程序有用的东西

dev-main 2023-01-26 12:46 UTC

This package is auto-updated.

Last update: 2024-08-26 16:06:34 UTC


README

一组完全非官方的XML-RPC接口定义语言(IDL)模式。

简介

该项目是探索使用现有的模式语言来定义XML-RPC网络服务的可能性,最终目标是支持现有的工具链,并允许开发新的工具,这些工具允许自动化代码生成和API验证等实践。

以下是支持的/测试的IDL语言的简要描述。

WSDL

可能在定义描述xmlrpc服务的某些WSDL文件时很有用。由于定义语言的限制,XSD并不完全准确。RELAX NG应该是100%精确和准确的 - 但似乎缺乏支持在WSDL中使用它的工具。

其他已知实现

详细信息

XML-RPC协议是在XML的黎明时期就已经被指定,并且仅用自然语言描述。人们已经尝试用DTD或XSD“逆向指定”它,但效果甚微。实际上,这两种定义语言在表达有效的xml结构方面能力有限,无法完整和正确地捕获XML-RPC语义(有关更多详细信息,请参阅http://www.cafeconleche.org/books/xmljava/chapters/ch02s05.html)。简而言之,XSD不允许指定具有相同名称但类型不同的连续两个xml元素,例如故障代码和故障原因响应成员就是这样。

另一方面,RELAX-NG定义语言被发现足够强大,可以完全描述XMLRPC,并且该分发中的模式可以用来验证任何符合规范的XMLRPC请求或响应。它不是权威的,因为XML-RPC规范由Dave Winer版权所有,而且他似乎对协议的进一步发展失去了兴趣,但它应该被认为是准确和适用于生产的(如果您发现任何错误,请告知作者)。

这种情况非常不幸,因为WSDL已经成为广泛接受的Web服务标准,并且存在大量工具可以解析现有的WSDL文件并自动生成代码存根,或者从现有代码生成WSDL定义。如果可以生成XMLRPC网络服务的WSDL表示,那么结果将是SOAP客户端和工具套件与XMLRPC服务器实现之间互操作性的大幅提高。

尽管WSDL语言设计的明显目标是允许描述每种可能的消息交换,使用任何可想的xml序列化方式在任何传输上(并且该语言的冗余、冗长和复杂直接是所寻求的灵活性的结果),但现有实现实际上仅支持Web服务的SOAP绑定和XSD作为语言定义模式。虽然名义上被接受,但RELAX-NG在Web服务工具套件中尚未得到广泛使用。这使我们几乎但并非完全互操作。

文件列表

  • schema.rnc:与schema.rng中找到的相同的RELAX NG模式定义,使用...表示法
  • schema.rng:一个描述XMLRPC的RELAX NG模式定义(使用xml表示法)
  • xmlrpc.wsdl:一个尝试描述XMLRPC方法调用和响应的XML模式定义
  • xmlrpc.xsd:一个尝试描述XMLRPC的XML模式定义

其他IDL

XRDL

最初托管在https://code.google.com/archive/p/xrdl/,该项目似乎已经停摆了一段时间。GitHub上有一些分支,例如https://github.com/mumitr0ll/xrdl,看起来维护也不是很积极。

system.describeMethods

该规范可在https://xmlrpc-epi.sourceforge.net/specs/rfc.system.describeMethods.php找到。据我所知,它从未在xmlrpc-epi C库之外实现过。

其他资源

将XML-RPC转换为SOAP

一个XSLT文件可在http://web.archive.org/web/20010611155715/http://soap.develop.com/xmlrpc/fromxr.xsl找到。

如何在SOAP中实现互操作性(允许SOAP客户端向XML-RPC服务器发送请求)的指南可在https://www.xml.com/pub/a/ws/2002/12/18/endpoints.html找到。

License Total Downloads