cXML FAQ
Beginning in February 1999, the cXML standard has been available for all to use. The details of its license agreement are found at https://cxml.org/license.html.
cXML is very different from most other electronic business protocols. cXML is a streamlined protocol intended for consistent communication of business documents between procurement applications, e-commerce hubs and suppliers. The protocol does not include the full breadth of interactions some parties may wish to communicate. However, through the use of Extrinsic elements and newly-defined domains for various identifiers, it is easily expanded by such applications. This expansion is the limit of point-to-point configurations necessary for communication.
The current standard includes documents for setup (company details and transaction profiles), catalogue content, application integration (including the widely-used PunchOut feature), original, change and delete purchase orders and responses to all of these requests, order confirmation and ship notice documents (cXML analogues of EDI 855 and 856 transactions) and new invoice documents.
- Very easy to implement automated order receipt, fulfillment updates and catalogue transport
- Many sell-side solutions come with the protocol out of the box
- cXML is the most widely adopted B2B protocol
- cXML is only way you can implement PunchOut today
- Extensible: If your buyer relationships require more information than cXML supports intrinsically, that data may still be sent end-to-end
- Leverages XML, which is the most robust language for describing information
- cXML is the only B2B XML standard that leaves much of the syntax from EDI behind
cXML v1.2 supports catalogue content and supplier descriptions, PunchOut (of a few varieties), Master Agreement, Purchase Order (create, edit and delete), Order Confirmation, Ship Notice, Invoice and various additional synchronization and integration transactions.
PunchOut is not a link to a web site. PunchOut is an easy-to-implement protocol for interactive sessions managed across the Internet. PunchOut is a communication from one application to another, achieved through a dialog of real-time, synchronous cXML messages, which support user interaction at a remote site. It is the best way to manage user sessions distributed across web applications.
This protocol is most commonly used today in the form of Procurement PunchOut, which specifically supports interactions between a procurement application and a supplier’s eCommerce web site and possibly includes an intermediary for authentication and version matching. Procurement PunchOut describes the "traditional" PunchOut scenarios that use the regular PunchOut Setup Request and PunchOut Setup Response. The PunchOut session is initiated with a PunchOutSetupRequest and terminates with a posting of a PunchOutOrderMessage, which contains the initiating transaction’s cookie and a shopping cart or “quote”.
cXML is published based on the input of many companies. cXML is a protocol that is published for free on the Internet along with its DTD. It is open to all for their use without restrictions apart from publications of modifications and naming that new protocol. Essentially, everyone is free to use cXML with any and all modifications as long as they don't publish their own standard and call it "cXML".
cXML is now spread across a number of DTD files. The primary transactions are contained in cXML.dtd; Confirmation and Ship Notice transactions are in Fulfill.dtd and the new InvoiceDetail transaction is in InvoiceDetail.dtd. All three have associated *.zip files containing the DTD for viewing, the constituent module files (*.mod), many XML example files and (in some cases) *.jpg files containing diagrams of the transactions. Only the cXML.zip file contains additional documentation (the cXMLUsersGuide.pdf file) describing the entire standard. This additional file is not updated as frequently as the DTD files and may not reflect every change noted in the Release Notes.
Further, every minor version corresponds to a separate directory in the https://xml.cxml.org/schemas/cXML/… tree. Once a new directory is created, its content (particularly the DTD files) will never change.
The 1.2.064 DTD file is available at https://xml.cxml.org/schemas/cXML/1.2.064/cXML.dtd. All other versions are also available from similarly constructed locations on the https://xml.cxml.org/ site. (Note that this site does not have a useful home page.)
The current version of cXML is 1.2.064. The correct SYSTEM identifier for that version is https://xml.cxml.org/schemas/cXML/1.2.064/cXML.dtd. Please check this site or its downloads page for future revisions to the specification.
Due to the structure described above, cXML.org is not open to membership requests. We remain interested in all proposals for enhancements to the standard.
cXML is based on the industry-standard XML DTD mechanism and will continue to use this mechanism for the foreseeable future.
Transaction integrity and datatype validation are enforced at the application level and are well documented in the cXML Reference Guide (PDF). The mechanisms built into the cXML protocol are complete and easy to implement by any company. That's one reason cXML is the leading B2B protocol.
UDDI and cXML are separate efforts intended to cover different parts of the eCommerce landscape. Once two parties have discovered each other using UDDI, they may send cXML business documents to one another. In other words, cXML is a model that may be registered under UDDI and then used within binding templates and business service descriptions.
The two specifications are completely separate in terms of development timeline, underlying technologies and technical infrastructure. They may (over time) merge towards a common transport layer such as SOAP or ebXML Messaging Service. However, a SOAP or ebXML version of cXML is not yet planned.
cXML is the primary protocol for B2B interactions over the Internet. Most other XML B2B protocols are an attempt to translate the EDI business process and documents into the syntax of XML. As such, they generally encounter the same problems that have plagued EDI: The need for point-to-point mappings makes them unsuitable for the Internet. cXML attempts to come at the problem from another angle (informed by EDI but not following it) and avoid those issues.
RosettaNet is many things but primarily a very good data dictionary for the electronic components supply chain. cXML is much more "horizontal" and is unlikely to include this data dictionary directly. RosettaNet has also defined a large number of transactions around business processes that, so far, have not been requested within the cXML protocol.
The cXML.org group does not itself provide example implementation of any portion of the cXML protocol except within the documentation sets we publish. However, member company SAP Ariba has a site containing many examples.
Please head to https://knowledge.ariba.com/supplier and register to view this information. The "PunchOut Source code examples" section is probably most relevant to your question. That section includes ASP, Java, Perl and ColdFusion examples for a PunchOut site.