Re: xml-rpc and WSDL - progress report

Stephane Bortzmeyer <[email protected]>
Newsgroups gmane.text.xml.rpc.specification
Organization NIC France
Message-ID <[email protected]>
On Thu, Dec 01, 2005 at 04:37:23PM +0100,
 Gaetano Giunta <[email protected]> wrote 
 a message of 61 lines which said:

> Otoh, a relax-NG schema, kindly provided by Stephane Bortzmeyer,
> looks like it could be the key to unlock the treasure chest: it is,
> afaict, 99% correct in describing xmlrpc, with a very limited set of
> false positives (valid charset range is not yet implemented on
> method names) and false negatives (for fault responses, fault code
> MUST come before fault string).

Right, but here is a fixed (and documented) version, thanks to Eric van
der Vlist.



  ----------

namespace dublin = "http://purl.org/dc/elements/1.1/"

dublin:title [ "RelaxNG schema for XML-RPC" ]
dublin:description [ "The XML-RPC protocol (http://www.xmlrpc.com/spec) has been specified a long time ago, at the dawn of XML and is described only in natural language. An attempt have been made to reverse specify it with DTD or XSD (http://www.cafeconleche.org/books/xmljava/chapters/ch02s05.html). I try here with RelaxNG." ]
dublin:creator [ "Stephane Bortzmeyer <[email protected]>" ]
dublin:date [ "2005-12-02T15:17:00Z" ]
dublin:rights [ "Use as you please" ]

start = methodcall | methodresponse

methodcall = element methodCall {methodname, params?}

methodresponse = element methodResponse {fault | uniqueparams}

methodname = element methodName {xsd:string {pattern = "[a-zA-Z0-9_\.,/]+"}}

params = element params {param+}

uniqueparams = element params {param}

param = element param {value}

value = element value {typedparam | text}

typedparam = integer | boolean | stringval | double | datetime | base64 | 
             array | struct # string is a keyword

integer = element i4 {xsd:int} | element int {xsd:int} 

boolean = element boolean {"0" | "1"} # *Not* xsd:boolean (see the spec)

stringval = element string {text} 

double = element double {xsd:double}

datetime = element dateTime.iso8601 {text} # xsd:date does not allow 
                                               # "20051130T12:10:56"

base64 = element base64 {text}

array = element array {element data {value*}}

struct = element struct {namedmember*}

namedmember = element member {membername & value}

membername = element name {text}

fault = element fault {faultvalue}

faultvalue = element value {faultstruct}

faultstruct = element struct {(faultcode, faultstring) | 
                              (faultstring, faultcode)}

faultcode = element member {element name {"faultCode"} &
                            element value {integer}}

faultstring = element member {element name {"faultString"} &
                              element value {stringval | text}}


[Non-text portions of this message have been removed]



 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/xml-rpc/

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.