The purpose of this document is to compare and contrast a variety of XML
protocols. It will probably take a while to flesh out the form and content.
Viewers are invited to comment and contribute. The forum for discussing this
page and the data within is [email protected]. The list and archives are
open, you may join xml-dist-app by sending mailto [email protected] with
the Subject: subscribe
.
Since this document was created in March 2000, W3C chartered the XML Protocol Working Group whose task is to produce a simple XML-based messaging and remote procedure call protocol.
XML syntax | ||||||||
---|---|---|---|---|---|---|---|---|
Protocol | Organization | Architects | Status | ns | schema | DTD | Facets | Example |
generic XML protocols | provide a mechanism to represent arbitrary data. | |||||||
XML-RPC | Userland | Dave
Winer (userland), Bob Atkinson (microsoft), Mohsen Al-Ghosein (microsoft), Don Box (developmentor) |
deployed | 0 | 0 | 1? | [in a POST parameter] <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>41</i4></value> </param> </params> </methodCall> |
|
SOAP (mailing list) |
Ariba, Inc. Commerce One, Inc. Compaq Computer Corporation DevelopMentor, Inc. Hewlett Packard Company International Business Machines Corporation IONA Technologies Lotus Development Corporation Microsoft Corporation SAP AG UserLand Software Inc. |
Don Box, DevelopMentor David Ehnebuske, IBM Gopal Kakivaya, Microsoft Andrew Layman, Microsoft Noah Mendelsohn, Lotus Development Corp. Henrik Frystyk Nielsen, Microsoft Satish Thatte, Microsoft Dave Winer, UserLand Software, Inc. |
coded W3C NOTE |
2 | 2 | 0 | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <e:Book> <title>My Life and Work</title> <firstauthor href="#Person-1"/> <secondauthor href="#Person-2"/> </e:Book> <e:Person id="Person-1"> <name>Henry Ford</name> <address xsi:type="m:Electronic-address"> <email>mailto:[email protected]</email> <web>http://www.henryford.com</web> </address> </e:Person> <e:Person id="Person-2"> <name>Samuel Crowther</name> <address xsi:type="n:Street-address"> <street>Martin Luther King Rd</street> <city>Raleigh</city> <state>North Carolina</state> </address> </e:Person> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
|
WDDX | Allaire | Simeon Simeonov (Allaire), Nate Weiss (independent/JavaScript), Spike Washburn (Allaire/Java), Rasmus Lerdorf (PHP3), Scott Guelich (Scripted.com/Perl) |
deployed | 0 | 0 | 1 | <?xml version='1.0'?> <!DOCTYPE wddxPacket SYSTEM 'wddx_0090.dtd'> <wddxPacket version='0.9'> <header/> <data> <struct> <var name='s'><string>a string</string></var> <var name='a'><array length='2'> <number>10</number> <string>second element</string></array></var> <var name='obj'><struct> <var name='s'><string>a string</string></var> <var name='n'><number>-12.456</number></var> </struct></var> </struct> </data> </wddxPacket> |
|
XMI | Unisys Corporation Fujitsu IBM DSTC Recerca Informatica Oracle Daimler-Benz Platinum Technology |
deployed (Unisys) (ArgoUML exports XMI) |
1 | 0 | 1 | [UML model in an XMI document] <XMI xmi.version="1.1" xmlns:UML="org.omg/standards/UML"> <XMI.header> <XMI.metamodel name="UML" version="1.3" href="UML.xml"/> <XMI.model name="example" version="1" href="example.xml"/> </XMI.header> <XMI.content> <UML:Class name="C1"> <UML:Classifier.feature> <UML:Attribute name="a1" visibility="private"/> </UML:Classifier.feature> </UML:Class> </XMI.content> </XMI> |
||
Jabber | Jabber.org Open Source Project | Jeremie Miller | deployed | 1 | 0 | 1 | not reviewed yet | <stream:stream xmlns:stream="http://etherx.jabber.org/streams" xmlns="jabber:client" to="jabber.org"> <message to="[email protected]"> <subject>Test</subject> <body>This is a test message.</body> </message> <presence> <status>Working on Project XYZ</status> <show>away</show> </presence> </stream:stream> |
ebXML | UN/CEFACT oasis |
from a message from Dick Brooks SOAPAction: ebXML Content-type: multipart/related; boundary="BoundarY"; type="text/xml"; start=" <[email protected]>" --BoundarY Content-ID: <[email protected]> Content-Type: text/xml; charset="UTF-8" <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV='http://schemas.xmlsoap.org/soap/envelope/' xmlns:eb='http://www.ebxml.org/namespaces/messageHeader'> <SOAP-ENV:Header> <eb:MessageHeader mustUnderstand="1" version="1.0"> <From> <PartyId>urn:duns:123456789</PartyId> </From> <To> <PartyId>urn:duns:912345678</PartyId> </To> <CPAId>20001209-133003-28572</CPAId> <ConversationId>20001209-133003-28572</ConversationId> <Service type="proprietary">OrderProcessing</Service> <Action>NewXMLOrder</Action> <MessageData> <MessageId>mid:[email protected]</MessageId> <TimeStamp>20010215T111212.000Z</TimeStamp> <TimeToLive>20010215T112233.000Z</TimeToLive> </MessageData> <QualityofServiceInfo deliverySemantics="OnceAndOnlyOnce" messageOrderSemantics="NotGuaranteed" deliveryReceiptRequested="None"/> <Description xml:lang="en">A Purchase Order is attached</Description> </MessageHeader> </SOAP-ENV:Header> <SOAP-ENV:Body> <eb:Manifest id="abc123" version="1.0"> <Reference xlink:href="urn:cid:[email protected]" xlink:role="XLinkRole" xlink:type="simple" xlink:label="XLinkLabel"> <Description xml:lang="en-us">Purchase Order 1</Description> </Reference> </Manifest> </SOAP-ENV:Body> </SOAP-ENV:Envelope> --BoundarY Content-ID: <[email protected]> Content-Type: text/xml <purchase_order> <po_number>1</po_number> <part_number>123</part_number> <price currency="USD">500.00</price> </purchase_order> --BoundarY-- |
||||||
BizTalk June 2000 spec (graph discussion) |
Microsoft | Satish Thatte | ? | 2 | 2 | 0 | SOAPfacets plus: | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"> <SOAP-ENV:Header> <dlv:delivery SOAP-ENV:mustUnderstand="1" xmlns:dlv="http://schemas.biztalk.org/btf-2-0/delivery" xmlns:agr="http://www.trading-agreements.org/types/"> <dlv:to> <dlv:address xsi:type="agr:department">Book Order Department</dlv:address> </dlv:to> <dlv:from> <dlv:address xsi:type="agr:organization">Booklovers Anonymous</dlv:address> </dlv:from> </dlv:delivery> <prop:properties SOAP-ENV:mustUnderstand="1" xmlns:prop="http://schemas.biztalk.org/btf-2-0/properties"> <prop:identity>uuid:74b9f5d0-33fb-4a81-b02b-5b760641c1d6</prop:identity> <prop:sentAt>2000-05-14T03:00:00+08:00</prop:sentAt> <prop:expiresAt>2000-05-15T04:00:00+08:00</prop:expiresAt> <prop:topic>http://electrocommerce.org/purchase_order/</prop:topic> </prop:properties> </SOAP-ENV:Header> <SOAP-ENV:Body> <po:PurchaseOrder xmlns:po="http://electrocommerce.org/purchase_order/"> <po:Title>Essential BizTalk</po:Title> </po:PurchaseOrder> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
Wf-XML mailing list |
Workflow Management Coalition | WfMC Working Group 4 | beta spec V 1.0 due mid-April |
0 due in 1.0 |
0 due in 1.0 |
1 |
|
<WfMessage Version= 1.0> <WfMessageHeader> <Request><ResponseRequired>Yes</ResponseRequired></Request> <Key>http://www.XYZcompany.com/wfprocess</Key> <Operation>CreateProcessInstance</Operation> </WfMessageHeader> <WfMessageBody> <CreateProcessInstance.Request> <Key>http://www.XYZcompany.com/wfprocess</Key> <ObserverKey>http://www.mycompany.com/mywork</ObserverKey> <ContextData> <Vehicle> <VehicleType>Car</VehicleType> <Specification> <Manufacturer>Mercedes</Manufacturer> <Model>450SL</Model> </Specification> </Vehicle> <Furniture>chair</Furniture> </ContextData> <StartImmediately>Yes</StartImmediately> </CreateProcessInstance.Request> </WfMessageBody> </WfMessage> |
LOTP | not reviewed yet | |||||||
web service-related XML protocols | protocols with a fixed grammar targeting a particular application domain. | |||||||
WSDL | Ariba International Business Machines Corporation Microsoft | Erik Christensen (Microsoft) Francisco Curbera (IBM) Greg Meredith (Microsoft) Sanjiva Weerawarana (IBM) | not reviewed yet | from Web Services Description Language (WSDL) 1.0 You find find the colorized WSDL examples helpful. <?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/1999/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice"> <complexType> <all> <element name="price" type="float"/> </all> </complexType> </element> </schema> </types> <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePrice"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePriceResult"/> </message> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal" namespace="http://example.com/stockquote.xsd" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </input> <output> <soap:body use="literal" namespace="http://example.com/stockquote.xsd" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions> | ||||
WIDL | webMethods | Phillip Merrick (webMethods) Charles Allen (webMethods) | from 4. WIDL Examples <WIDL NAME="genericShipping" TEMPLATE="Shipping" BASEURL="http://www.shipping.com" VERSION="2.0"> <SERVICE NAME="TrackPackage" METHOD="Get" URL="/cgi-bin/track_package" INPUT="TrackInput" OUTPUT="TrackOutput" /> <BINDING NAME="TrackInput" TYPE="INPUT"> <VARIABLE NAME="TrackingNum" TYPE="String" FORMNAME="trk_num" /> <VARIABLE NAME="DestCountry" TYPE="String" FORMNAME="dest_cntry" /> <VARIABLE NAME="ShipDate" TYPE="String" FORMNAME="ship_date" /> </BINDING> <BINDING NAME="TrackOutput" TYPE="OUTPUT"> <CONDITION TYPE="Failure" REFERENCE="doc.title[0].text" MATCH="Warning Form" REASONREF="doc.p[0].text" /> <CONDITION TYPE="Success" REFERENCE="doc.title[0].text" MATCH="Foobar Airbill:*" REASONREF="doc.p[1].value" /> <VARIABLE NAME="disposition" TYPE="String" REFERENCE="doc.h[3].value" /> <VARIABLE NAME="deliveredOn" TYPE="String" REFERENCE="doc.h[5].value" /> <VARIABLE NAME="deliveredTo" TYPE="String" REFERENCE="doc.h[7].value" /> </BINDING> </WIDL> | |||||
SCL | org1 org2 | name1 (co) name2 (co) | not reviewed yet | [comment] | ||||
UDDI | ARIBA | not reviewed yet | from UDDI Data Structure Reference <element name="businessEntity"> <type content="elementOnly"> <group order="seq"> <element ref="discoveryURLs" minOccurs="0" maxOccurs="1"/> <element ref="name"/> <element ref="description" minOccurs="0" maxOccurs="*"/> <element ref="contacts" minOccurs="0" maxOccurs="1"/> <element ref="businessServices" minOccurs="0" maxOccurs="1"/> <element ref="identifierBag" minOccurs="0" maxOccurs="1"/> <element ref="categoryBag" minOccurs="0" maxOccurs="1"/> </group> <attribute name="businessKey" minOccurs="1" type="string"/> <attribute name="operator" type="string"/> <attribute name="authorizedName" type="string"/> </type> </element> | |||||
DISCO | Microsoft | not reviewed yet | from Draft: Discovery of Web Services (DISCO) <disco:discovery> <disco:discoveryRef ref='folder/discovery'/> <-- elements from other namespaces --> </disco:discovery> <disco:discovery> <scl:contractRef ref='my1.sdl'> <scl:contractRef ref='my2.sdl' docRef='my.htm'> </disco:discovery> <disco:discovery> <schema:schemaRef ref='my1.xsd' targetNamespace='http://my.org/my1.xsd'/> <schema:schemaRef ref='my2.xsd'/> </disco:discovery> | |||||
NASSL | IBM | Francisco Curbera Sanjiva Weerawarana Matthew J. Duftler | not reviewed yet | from NASSL paper <?xml version="1.0"?> <nsl:serviceDef name="StockQuoteService" version="1.0" xmlns:nsl="http://www.ibm.com/namespaces/NASSL" xmlns:sqs="http://www.getquote.com/ns/StockQuote" xmlns:xsd="http://www.w3.org/1999/XMLSchema"> <nsl:types> <nsl:typeDefs typeModel="http://www.w3.org/1999/XMLSchema"> <xsd:schema targetNamespace="http://www.getquote.com/ns/StockQuote"> <xsd:complexType name="stockquote"> <xsd:element name="date" type="xsd:date"/> <xsd:element name="price" type="xsd:float"/> <xsd:element name="change" type="xsd:float"/> <xsd:element name="volume" type="xsd:int"/> </xsd:complexType> </xsd:schema> </nsl:typeDefs> </nsl:types> <nsl:interfaces> <nsl:interfaceDef name="GetQuote"> <nsl:operationDef name="getQuote"> <nsl:type name="sqs:stockquote"/> <nsl:parameters> <nsl:parameterDef name="symbol" direction="IN"> <nsl:type name="xsd:string"/> </nsl:parameterDef> </nsl:parameters> </nsl:operationDef> </nsl:interfaceDef> </nsl:interfaces> <nsl:implementations> <nsl:implementationDef name="HTTP-POST-GetQuotes"> <nsl:implements interface="GetQuote"/> <nsl:access protocol="HTTP-POST"/> </nsl:implementationDef> <nsl:implementationDef name="RPC-SOAP-HTTP-GetQuotes"> <nsl:implements interface="GetQuote"/> <nsl:access protocol="RPC-SOAP-HTTP"/> <nsl:encoding styles="http://schemas.xmlsoap.org/soap/encoding/ http://www.ibm.com/namespaces/xmi"/> <nsl:protocolExtensions> <operationsURI value="urn:StockQuoteService"/> <methodNamespace value=""/> <action value="urn:get-quote-rpc-soap-http"/> </nsl:protocolExtensions> </nsl:implementationDef> </nsl:implementations> <nsl:providers> <nsl:providerDef> <nsl:provides implementation="HTTP-POST-GetQuotes"/> <nsl:endPoint url="http://www.getquote.com/cgi-bin/getquote.pl"/> </nsl:providerDef> <nsl:providerDef> <nsl:provides implementation="RPC-SOAP-HTTP-GetQuotes"/> <nsl:endPoint url="http://www.getquote.com/ibm-soap-1.2/rpcrouter.jsp"/> </nsl:providerDef> </nsl:providers> </nsl:serviceDef> | ||||
domain-specific XML protocols | protocols with a fixed grammar targeting a particular application domain. | |||||||
ICE | GCA | Neil Webber, Vignette
Corporation Conleth O'Connell, Vignette Corporation Bruce Hunt, Adobe Systems, Inc. Rick Levine, Sun Microsystems, Inc. Laird Popkin, Sothebys.com |
deployed | 0 | 0 | 1 | <?xml version="1.0"?> <!DOCTYPE ice-payload SYSTEM "http://www.ice-ag.org/ICE.dtd"> <ice-payload payload-id="1998-07-05T02:02:[email protected]" timestamp="02:02:23,449" ice.version="1.0"> <ice-header> <ice-sender sender-id="4af37b30-2c35-11d2-be4a-204c4f4f5020" name="XYZ Corporation" role="subscriber"/> <ice-user-agent>Acme Ray Gun ICE System, V0.9beta</ice-user-agent> </ice-header> <ice-request request-id="1998-07-05T02:02:[email protected]"> <ice-nop/> </ice-request> </ice-payload> |
|
IOTP | Commerce One | David Burdett | ? | 0 | 0 | 1 | <BrandList ID='M1.2' XML:Lang='us-en' ShortDesc='Purchase book including s&h' PayDirection='Debit' > <Brand ID ='M1.30' BrandId='MasterCard' BrandName='MasterCard Credit' BrandLogoNetLocn='ftp://otplogos.mastercard.com/mastercardcredit' ProtocolAmountRefs='M1.33'> </Brand> <Brand ID ='M.31' BrandId='Visa' BrandName='Visa Credit' BrandLogoNetLocn='ftp://otplogos.visa.com/visacredit' ProtocolAmountRefs='M1.33'> </Brand> <Brand ID ='M1.32' BrandId='AmericanExpress' BrandName='American Express' BrandLogoNetLocn='ftp://otplogos.amex.com' ProtocolAmountRefs ='M1.33' > </Brand > <ProtocolAmount ID ='M1.33' PayProtocolRef='M1.35' CurrencyAmountRefs='M1.34'> </ProtocolAmount> <CurrencyAmount ID ='M1.34' Amount='10.95' CurrCode='USD'/> <PayProtocol ID ='M1.35' ProtocolId='SCCD1.0' ProtocolName='Secure Channel Credit/Debit' PayReqNetLocn='http://www.example.com/etill/sccd1' > </PayProtocol> </BrandList> |
|
eCo | not reviewed yet | |||||||
XMOP | not reviewed yet | |||||||
XIOP (spec) |
Financial Toolsmiths AB | Anders W. Tell (Financial Toolsmiths AB) | Alpha 2Q 2000 | "http://xiop.org/" | 0 due in 1.0 | 0 due in 1.0 | reviewed by Anders
Tell no peer review yet... |
from http://xiop.sourceforge.net/doc/xiop_examples_1_2.html <typecode> <tk_struct repoid="IDL:/TheStruct:1.0" name="TheStruct" members="3"> <tk_struct_member name="first"> <typecode> <!-- first members typecode --> <tk_octet/> </typecode> </tk_struct_member> <tk_struct_member name="next"> <typecode> <tk_long/> </typecode> </tk_struct_member> <tk_struct_member name="last"> <typecode> <tk_string max-length="100"/> </typecode> </tk_struct_member> </tk_struct> </typecode> |
P3P | W3C | Lorrie Cranor
(AT&T), Marc Langheinrich (ETH Zurich), Massimo Marchiori (W3C/MIT), Martin Presler-Marshall (IBM), Joseph Reagle (W3C/MIT) |
deployment status | namespace | schema | dtd | not reviewed yet | from example 3.1 <POLICY xmlns="http://www.w3.org/2000/P3Pv1" discuri="http://www.catalog.example.com/PrivacyPracticeBrowsing.html"> <ENTITY> <DATA-GROUP> <DATA ref="#business.name">CatalogExample</DATA> <DATA ref="#business.contact-info.postal.street.line1">4000 Lincoln Ave.</DATA> <DATA ref="#business.contact-info.telecom.telephonenum.number">3926753</DATA> </DATA-GROUP> </ENTITY> <DISPUTES-GROUP> <DISPUTES resolution-type="independent" service="http://www.PrivacySeal.example.org" short-description="PrivacySeal.example.org"> <REMEDIES><correct/></REMEDIES> <IMG src="http://www.PrivacySeal.example.org/Logo.gif"/> </DISPUTES> </DISPUTES-GROUP> <ACCESS><nonident/></ACCESS> <STATEMENT> <PURPOSE><admin/><develop/></PURPOSE> <RECIPIENT><ours/></RECIPIENT> <RETENTION><stated-purpose/></RETENTION> <DATA-GROUP> <DATA ref="#dynamic.clickstream.server"/> <DATA ref="#dynamic.http.useragent"/> </DATA-GROUP> </STATEMENT> </POLICY> |
CCPP | W3C | Franklin
Reynolds (Nokia Research Center) Johan Hjelm (W3C/Ericsson) Spencer Dawkins (Nortel) Sandeep Singhal (IBM) |
testing | 1 | RDF | 0 | not reviewed yet | [from Inline example] <?xml version="1.0"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:prf="http://www.w3.org/TR/WD-profile-vocabulary#"> <rdf:Description about="HardwarePlatform"> <prf:Defaults Vendor="Nokia" Model="2160" Type="PDA" ScreenSize="800x600x24" CPU="PPC" Keyboard="Yes" Memory="16mB" Bluetooth="YES" Speaker="Yes" /> <prf:Modifications Memory="32mB" /> </rdf:Description> <rdf:Description about="SoftwarePlatform"> <prf:Defaults OS="EPOC1.0" HTMLVersion="4.0" JavaScriptVersion="4.0" WAPVersion="1.0" WMLScript="1.0" /> <prf:Modifications Sound="Off" Images="Off" /> </rdf:Description> <rdf:Description about="EpocEmail1.0"> <prf:Defaults HTMLVersion="4.0" /> </rdf:Description> <rdf:Description about="EpocCalendar1.0"> <prf:Defaults HTMLVersion="4.0" /> </rdf:Description> <rdf:Description about="UserPreferences"> <prf:Defaults Language="English"/> </rdf:Description> </rdf:RDF> |
E-Speak | hp | ??? | deployed? | namespace | schema | dtd | not reviewed yet | [comment] |
transport/transfer protocols | Transport and Transfer protocols designed to carry XML protocol payloads. | |||||||
BXXP app design protocol Note - these are broken links. Try incrementing the numbers at the end of the URL to see where they are now. older HTML version of protocol draft |
- no research on this topic yet - | |||||||
Transaction Internet
Protocol (part deux) |
Microsoft Tandem |
J. Lyon (Microsoft) K. Evans (Tandem) J. Klein (Tandem) |
||||||
HTTP-NG (architecture) |
A layered distributed object system with underlying protocol support. | |||||||
WorldOS | WorldOS Corp. | Lucas Gonze | deployed | 0 | 0 | 0 | <?xml version="1.0" encoding="UTF-8"?> <msg> <protocol> <id>WorldOS</id> <version>0.1</version> <definition>http://www.worldos.org/WorldOS.xml</definition> <checksum>-1</checksum> <function>debug</function> </protocol> <funcdata /> </msg> |
|
non-XML protocols | non-XML protocols that may have some interesting lessons for us. | |||||||
XDR | XDR is Sun's RPC data format. | |||||||
RACE | Global Financial Networks Limited | Charles Kilkenny (Global Financial Networks Limited) | draft | N/A | N/A | N/A | not independently reviewed yet |
Below is the list of facets I have defined for characterizing these protocols.