It has been a while since my article on standards related to web services so I think it is time to take a look at recent activity by some of the significant standards publishing organizations, starting with the W3C. The W3C continues to be the main organization for creation of internationally recognized standards for XML, WSDL, and HTML. At any given time, a large number of related standards are working their way through the standardization process in various states of finality. W3C publications occur in a bewildering variety of flavors: notes, drafts, candidate recommendation, proposed recommendation and finally W3C Recommendation, essentially a standard.
The current version of the XML 1.0 standard is the fourth edition. This edition of the recommendation reached final form in August 2006. XML version 1.1 recommendation (2nd edition) was also published at the same time but does not seem to have been adopted widely. In fact, Microsoft has chosen not to support 1.1 since it is not backwards compatible with 1.0.
The fifth edition of XML 1.0 is currently in the form of a "proposed recommendation" draft published in Feruary 2008. It includes some changes defining the characters not allowed in element and attribute names which first appeared in XML 1.1. The fifth edition might be regarded as an attempt to save these XML 1.1 improvements from obscurity. You may need to pay attention to this edition if you need to make use of some foreign language character sets and other special characters.
WSDL, the Web Services Description Language, version 1, has been sucessfully utilized in a variety of SOAP toolkits for a variety of computer languages to automate creation of basic client and server code. The current edition, version 1.1, was published published as a W3C "note" in March 2001, before interest in RESTful style web services really got started.
Workers on the next version of WSDL, originally called 1.2, made so many modifications that it became version 2.0, reaching W3C "recommendation" status in June 2007. Version 2.0 makes major changes in the approach to describing a web service, but continues to emphasize SOAP. The published standard does not give any example of RESTful service description, but this article at the IBM developerworks site shows how to use WSDL 2.0 for that purpose. I also found this wikipedia article giving an example WSDL describing a REST style web service implementing GET, POST, PUT, and DELETE methods.
XQuery and XPath
The W3C groups several standards for manipulating XML documents in the Extensible Stylesheet Language Family (XSL). The complex interactions of various XML related standards mean that none of these standards evolves in isolation and the requirements of one frequently suggest improvements to others. Here is an abbreviated list of some of these interacting standards:
- XSLT The language for transforming XML documents, typically for presentation. The most mature standard, dating from 1999.
- XPath The language for access to selected parts of an XML document, used in both XSLT and XQuery.
- XQuery The language for expressing database query style operations on XML documents.
- XML Schema The language used to define data types used in XML, dating from 2004.
- XDM The Data Model used by XPath and XQuery.
The original (1999) XPath 1.0 specification has stood up well, but as with so many W3C recommendations, work on a 2.0 version continued, resulting in a formal 2.0 recommendation in January 2007. XQuery, XPath 2.0 and XSLT 2.0 share a common "Data Model" also published in January 2007. The data model refines the basic XML standard to describe the representation of all legal values in XML document nodes, and how expressions evaluate them, but it is not tied to any particular computer language representation. As an example of how standards evolve and interact, the Data Model working group found it necessary to add additional types to the XML Schema language list of allowed primitive types. Presumably the XML Schema Datatypes recommendation will eventually catch up.
XQuery provides a simplified toolkit to extract data from XML formatted data sources with a specially formatted query statement. These statements are similar to SQL statements used with relational databases and will look quite familiar to SQL programmers. XQuery depends on the syntax of XPath 2.0 expressions to locate XML items. An XQuery/XPath expression can replace many lines of Java code but this convenience comes at a performance cost. This is not surprising since an XPath tool has to both interpret the expression and navigate through the XML document.
The W3C has released several important draft standards related to XQuery in 2008. XQuery version 1.1 reached working draft status in July. At the present time this version extends 1.0 with a "small number of new features" related to grouping search results.
What is the significance of these standards?
That is a really good question! Some W3C standardization efforts have had a great impact on the development of the web and web services, while others, such as XML 1.1, are generally ignored. In some cases, publications which never reached the formal "W3C Recommendation" stage, such as WSDL 1.1, have been accepted as standards without question by the industry. In my opinion, the developments in the XQuery and XPath are going to be the most significant since they vastly simplify working with the world's ever increasing volume of XML formatted data.