XSL History

1. History of XSL, XSLT XPATH


History of XSL, XSLT XPATH

Matt Gushee et al.

"XSL" can refer to any of several things, but the original concept was a platform- and media-independent formatting language (eXtensible Stylesheet Language). Now, this original W3C proposal had two parts. First was the formatting language per se, which is a set of XML elements that describe parts of a page in a very high-level way, e.g. "<block>," "<table>," etc. These are the formatting objects. The second part was a transformation language, which was intended mainly (solely?) for converting an XML document into a "result tree" consisting of XSL formatting objects. The original developers envisioned a 2-stage process:

                                             /-> output format A
	XML Source -----\                   /
                         >--> result tree -<---> output format B
	XSL Stylesheet -/                   \
                                             \-> output format C

Well, along came Microsoft, and others, and said "This is too complicated. Most people just want to output HTML, and we can do that with just the transformation part of XSL. No need for all these formatting objects." So they went ahead and implemented just the transformation language. At first they were criticized for their partial implementation, but then the XML community began to think that maybe this wasn't such a bad idea after all (or perhaps nobody wanted to fight Microsoft).

And so XSL was split into two parts: XSLT and ... XSL. The XSL spec defines the formatting objects, and so it is informally known as XSLFO (or XSL-FO).

XSLT is the transformation language, which you can use to transform an XML document into another XML document, into HTML, or really into any type of text document. This is what most people are using today.

So when people say "XSL", it can mean:

the W3C XSL spec, AKA XSL-FO; the general process of transforming documents with XSLT + XSL-FO; or, unfortunately: XSLT (or the early version of it that Microsoft implemented)

I haven't mentioned XPath, but that's a good deal simpler. XPath is a syntax for identifying nodes in an XML document that you want to process in some way. XSLT depends on XPath, but it is separate because several other W3C specs depend on it too.

Wendell Piez adds:

I'm editorializing a bit, so alternate viewpoints are encouraged.

I thought Matt's potted history was excellent, except for one detail ... I think it arguable that the split of XSLT from XSL proper was motivated primarily by the MS implementation. That was a big part of it, but as you remember MS's was not the only implementation of early drafts. (There was also XT and one or two others in Java, plus that interesting package InDelv, etc. etc.) The whole community was discovering how useful the transformation part was even without the FOs (targetting HTML). A number of early adopters were quite outspoken on this issue, on XSL-List, sometimes with lengthy arguments. Check out the list archive.

Now, the completion and finalization of XSLT into a Rec might well have been motivated largely by the way the MS implementation of WD/TR-xsl "got legs" -- but all that happened in the committee, so it's impossible for us mortals to know. Yet sometimes I have wondered whether if MS (or some other large simian?) would implement part of FO, with undocumented non-standard extensions, FO would quickly come to Rec. ??!??

(FWIW, much as we bang on Microsoft for their apparently predatory marketplace tactics, the history shows that technically, at least, XSL owes quite a bit to their investment.)

As for dates, here's a chronology. Again, comments welcome:

    August 1997 * XSL Note (proposed by Inso, MS and others):
                * Merger of DSSSL flow object and CSS formatting properties
                  expressed in XML syntax
   January 1998 * XSL Working Group formed, and we are starting to see
                  tools (MS Technology Preview, others)
  February 1998 * [XML Rec finalized]
                * XSL-List started at mulberrytech.com (we owe you, Tony!)
       May 1998 * XSL Requirements Summary
    August 1998 * XSL Working Draft
                * Significantly different from NOTE-XSL
                * Divided into "Tree Construction" and "Formatting Object"
                  portions with different editors
                * XT alpha version released by James Clark
  December 1998 * XSL Working Draft
                * MS IE5 XSL processor largely conforms to this draft
     April 1999 * XSL Working Draft
                * Transformations are now a separate "XSLT" document
                  but still part of XSL specification
      July 1999 * XSLT Working Draft
                * New XPath Working Draft common to XSLT and XPath
  November 1999 * XSLT (http://www.w3.org/TR/xslt) and XPath
                  (http://www.w3.org/TR/xpath) become Recommendations
     March 2000 * "Last Call" XSL Working Draft

But for the real deal, check out the W3C site

Tony being Tony suggests...

For even more detail, see Robin Covers Page

From Robins site then, the dated history appears (near term to historic)

Publication Sketch [October 18, 2000] Extensible Stylesheet Language (XSL) Version 1.0. Reference: W3C Working Draft 18-October-2000.

[August 28, 2000] XSL Transformations Requirements Version 1.1, W3C Working Draft 25-August-2000.

[March 27, 2000] Last Call Working Draft for the W3C Extensible Stylesheet Language (XSL) Version 1.0.

[March 01, 2000] W3C Releases New Working Draft for Extensible Stylesheet Language (XSL) Version 1.0.

[January 12, 2000] A new working draft specification is published for the Extensible Stylesheet Language (XSL) Version 1.0.

[November 16, 1999] XSL Transformations (XSLT) and XML Path Language (XPath) are published as W3C Recommendations.

On October 08, 1999, the XSLT Specification (XSL Transformations) and XPath Specification were promoted to Proposed Recommendation status. See the descriptions and URLs below.

On July 09, 1999, a new working draft of the XSLT specification was issued in conjunction with the publication of XPath. XPath (XML Path Language) "is a language for addressing parts of an XML document, designed to be used by both XSLT and XPointer. XPath is the result of an effort to provide a common syntax and semantics for functionality shared between XSL Transformations and XPointer."

On April 21, 1999, the W3C XSL Working Group published a working draft version of the XSL Transformations (XSLT) Specification. (W3C Working Draft 21-April-1999). In this draft, XSLT is described as "a language for transforming XML documents into other XML documents. A new working draft of the Extensible Stylesheet Language (XSL) Specification [formatting] was also released.

On December 18, 1998, the W3C announced the availability of a new (second) Working Draft of the Extensible Stylesheet Language (XSL) Version 1.0 specification (WD-xsl-19981216).

On August 18, 1998, the World Wide Web Consortium (W3C) published the first public Working Draft of XSL 1.0 as Extensible Stylesheet Language (XSL), Version 1.0..

On August 27, 1997, A Proposal for XSL was submitted to the W3C by authors from Inso Corporation, Microsoft Corporation, ArborText, University of Edinburgh, [and by] James Clark. This Proposal for XSL addresses the Extensible Style Language (XSL) which is "the deliverable for Phase III of the SGML, XML, and Structured Document Interchange Activity of the W3C. The charter for this activity specifies the use of ISO/IEC 10179 Document Style Semantics and Specification Language (DSSSL) for the stylesheet language component. XSL is based on DSSSL. XSL is a stylesheet language designed for the Web community. It provides functionality beyond CSS (e.g., element reordering). [The authors] expect that CSS will be used to display simply-structured XML documents and XSL will be used where more powerful formatting capabilities are required or for formatting highly structured information such as XML structured data or XML documents that contain structrued data."

For the record,

W3C NOTE: A Proposal for XSL. Reference: NOTE-XSL.html. Dated August 21, 1997 and submitted to W3C on 27 August 1997. Submitted to the W3C by Microsoft, Inso, and Arbortext. Authors: Sharon Adler, Inso Corporation [2000-02 IBM]; Anders Berglund, [IBM]; James Clark; Istvan Cseri, Microsoft Corporation; Paul Grosso, ArborText; Jonathan Marsh, Microsoft Corporation; Gavin Nicol, Inso Corporation; Jean Paoli, Microsoft Corporation; David Schach, Microsoft Corporation; Henry S. Thompson, University of Edinburgh; Chris Wilson, Microsoft Corporation.

Phew. Having spent half an hour on Robins page http://xml.coverpages.org/xsl.html, I always thought of his stuff as whats coming, but I suppose it becomes history! Yet again, what a website!

If you want to see a proof of Turing completeness, See unidex.com