Coordinates | 51°40′43″N33°54′41″N |
---|---|
name | XSLT |
extension | .xsl, .xslt |
mime | application/xslt+xml |
owner | World Wide Web Consortium |
screenshot | |
genre | Stylesheet language |
extendedfrom | XML |
standard | 1.0 (Recommendation),2.0 (Recommendation) }} |
title | XSL Transformations |
---|---|
status | Published |
year started | 1997 |
editors | James Clark (1.0), Michael Kay (2.0) |
base standards | XML |
related standards | XSL, XSL-FO, XPath |
abbreviation | XSLT |
domain | XML transformation |
website | 2.0 }} |
Originally, XSLT was part of the W3C's Extensible Stylesheet Language (XSL) development effort of 1998–1999, a project that also produced XSL Formatting Objects and the XML Path Language, XPath. The editor of the first version was James Clark. XSLT 1.0 was published as a Recommendation by the W3C on 16 November 1999. After an abortive attempt to create a version 1.1 in 2001, the XSL working group joined forces with the XQuery working group to create XPath 2.0, with a richer data model and type system based on XML Schema. XSLT 2.0, developed under the editorship of Michael Kay, was built on this foundation in 2002–2006.
As a language, XSLT is influenced by functional languages, and by text-based pattern matching languages in the tradition of SNOBOL and awk. Its most direct predecessor was ISO DSSSL, a language that performed the same function for full SGML that XSLT performs for XML (Some members of the standards committee that developed XSLT, including James Clark, had previously worked on DSSSL.) Unlike DSSSL, however, XSLT code uses the syntax of its target language, XML, which means that it can also be viewed as a Turing-complete template processor.
Most of this article is applicable to both XSLT versions; any differences are noted in the text.
The XSLT processor ordinarily takes two input documents—an XML source document, and an XSLT stylesheet—and produces an output document. The XSLT stylesheet contains a collection of ''template rules'': ''instructions'' and other directives that guide the processor in the production of the output document.
The processor follows a fixed algorithm: assuming a stylesheet has already been read and prepared, the processor builds a ''source tree'' from the input XML document. It then starts by processing the source tree's root node, finding in the stylesheet the best-matching template for that node, and evaluating the template's contents. Instructions in each template generally direct the processor to either create nodes in the result tree, or process more nodes in the source tree in the same way as the root node. Output is derived from the result tree.
Client-side XSLT adoption has been slow due to widespread deployment of older (or alternative) browsers without XSLT support. For similar reasons, adoption of XSLT 2.0 in such environments remains limited. (See Comparison of layout engines (XML)#XSL technologies).
Nevertheless, early adopters included Microsoft Internet Explorer 6 (since 2001) and Netscape 7 (since 2002). Earlier still, Internet Explorer 5 supported XSLT’s draft specification since 1999 or earlier, although it was incompatible with the final W3C specification. Netscape 6 included partial support since 2000.
Server-side XSLT processors (a somewhat misleading term, as they don’t require a server to function; the name is intended to contrast with “client-side”) exist as both standalone products and components of other software. This includes web browsers, application servers, frameworks (such as Java and .NET), or even operating systems. For example, Windows XP’s MSXML3 library includes an XSLT 1.0 processor. The GNOME desktop environment 2 includes libxslt, an open source implementation with complete support for the XSLT 1.0 specification. The libxslt library is also used by other software, such as WebKit. Other examples include Apache’s Xalan and Saxon XSLT (which supports XSLT 2.0 as well).
Most early XSLT processors were interpreters. More recently, code generation is increasingly common, using portable intermediate languages (such as Java bytecode or .NET Common Intermediate Language) as the target. However, even the interpretive products generally offer separate analysis and execution phases, allowing an optimized expression tree to be created in memory and reused to perform multiple transformations. This gives substantial performance benefits in online publishing applications, where the same transformation is applied many times per second to different source documents. This separation is reflected in the design of XSLT processing APIs (such as JAXP).
Early XSLT processors had very few optimizations. Stylesheet documents were read into Document Object Models and the processor would act on them directly. XPath engines were also not optimized. Increasingly, however, XSLT processors use optimization techniques found in functional programming languages and database query languages, such as static rewriting of an expression tree (e.g., to move calculations out of loops), and lazy pipelined evaluation to reduce the memory footprint of intermediate results (and allow "early exit" when the processor can evaluate an expression such as following-sibling::*[1]
without a complete evaluation of all subexpressions). Many processors also use tree representations that are significantly more efficient (in both space and time) than general-purpose DOM implementations.
Future XSLT 3.0 implementation will also allow to stream on the input. It will allow implementation to have low latency between the input and the output. It is especially important when transformation are chained together in XML Pipelines, for example in XProc.
XSLT 1.0 uses XPath 1.0. Similarly, XSLT 2.0 relies on XPath 2.0; both specifications were published on the same date.
The XSLT 2.0 and XQuery 1.0 standards were developed by separate working groups within W3C, working together to ensure a common approach where appropriate. They share the same data model, type system, and function library, and both include XPath 2.0 as a sublanguage.
The two languages, however, are rooted in different traditions and serve the needs of different communities. XSLT was primarily conceived as a stylesheet language whose primary goal was to render XML for the human reader on screen, on the web (as web template language), or on paper. XQuery was primarily conceived as a database query language in the tradition of SQL.
Because the two languages originate in different communities, XSLT is stronger in its handling of narrative documents with more flexible structure, while XQuery is stronger in its data handling, for example when performing relational joins.
As of 2009, there is no MIME/Internet media type registered for XSLT.
The XSLT 1.0 Recommendation (1999) says "The MIME media types text/xml
and application/xml
should be used for XSLT stylesheets. It is possible that a media type will be registered specifically for XSLT stylesheets; if and when it is, that media type may also be used." It goes on to use text/xml
in an example of how to embed a stylesheet with the xml-stylesheet
processing instruction.
RFC 3023 points out potential technical problems with text/*
types in general, and proposes application/xslt+xml
as an ideal media type for XSLT. The XSLT 2.0 Recommendation (January 2007) includes a formal application to register this media type. However, at the time of writing (January 2009) the process of registration has not yet been completed, and RFC 3023 warns that "... this media type should not be used until such registration has been completed."
Pre-1.0 working drafts of XSLT used text/xsl
in their embedding examples, and this type was implemented and continues to be promoted by Microsoft in Internet Explorer and MSXML. It is also widely recognized in the xml-stylesheet
processing instruction by other browsers. In practice, therefore, users wanting to control transformation in the browser using this processing instruction are obliged to use this unregistered media type.
Its evaluation results in a new XML document, having another structure:
In order for a web browser to be able automatically to apply an XSL transformation to an XML document on display, an XML stylesheet processing instruction can be inserted into XML. So, for example, if the stylesheet in Example 2 above were available as "example2.xsl", the following instruction could be added to the original incoming XML:
(In this example, text/xsl
is technically incorrect according to the W3C specifications, but it is the only media type that is widely supported across current (2009) browsers.)
; Tutorials
; Mailing lists
; XSLT code libraries
; Further examples
Category:Declarative programming languages Category:Functional languages Category:Markup languages Category:Transformation languages Category:World Wide Web Consortium standards Category:XML-based programming languages Category:XML-based standards
ca:Extensible Stylesheet Language Transformations cs:XSLT da:XSLT de:XSL Transformation es:Extensible Stylesheet Language Transformations eu:XSLT fa:تبدیلات اکساسال fr:Extensible Stylesheet Language Transformations ko:XSLT id:Extensible Stylesheet Language Transformations is:XSLT it:XSL Transformations lt:XSLT hu:Extensible Stylesheet Language Transformations ms:XSLT nl:Extensible Stylesheet Language Transformations ja:XSL Transformations no:XSLT pl:XSL Transformations pt:XSLT ru:XSLT simple:XSLT fi:XSLT sv:XSLT tr:XSLT uk:XSL Transformations vi:XSLT bat-smg:XSLT zh:XSLTThis text is licensed under the Creative Commons CC-BY-SA License. This text was originally published on Wikipedia and was developed by the Wikipedia community.
Laura Rogers (born March 10, 1979 in Wales) is a British actress.
On stage, in December 2003 to January 2004 she was in ''Revelations'' at the Hampstead Theatre in London. In April and May 2004 she performed as Mary Yellan in ''Jamaica Inn'' at the Salisbury Playhouse. She then went into a production of ''Celestina'', which started at the Birmingham Rep Theatre and moved onto the King's Theatre, Edinburgh as part of the Edinburgh International Festival that year before returning to the Rep. In February 2006 she appeared at the Bristol Old Vic as Rosine in ''The Barber Of Seville''. In December of that year she played Milady de Winter in ''The Three Musketeers'' at the same venue.
In 2007 she played Wing Governor Helen Stewart in ''Bad Girls: The Musical'' in London's West End, a role played (as a non-musical part) in series 1-3 of the television series ''Bad Girls'' by Scottish actress Simone Lahbib. Rogers previously appeared in this role in the musical's run at the West Yorkshire Playhouse in 2006.
On television, Rogers has also made guest appearances in the BBC series ''Rockface'', ''Holby City'' and ''Doctors''.
In 2008 she played Helena in ''A Midsummer Night's Dream'' and Timandra in ''Timon of Athens'' at Shakespeare's Globe Theatre in London.
She performed the role of Celia in ''As You Like It'' at the Globe in 2009 and played Lady Macbeth in the same theatre from 23 April-27 June 2010.
Laura is currently performing in the West End production of ''The 39 Steps'' at the Criterion Theatre as Annabella Schmidt, Margaret and Pamela, succeeding well known Wicked actress Dianne Pilkington.
This text is licensed under the Creative Commons CC-BY-SA License. This text was originally published on Wikipedia and was developed by the Wikipedia community.
The World News (WN) Network, has created this privacy statement in order to demonstrate our firm commitment to user privacy. The following discloses our information gathering and dissemination practices for wn.com, as well as e-mail newsletters.
We do not collect personally identifiable information about you, except when you provide it to us. For example, if you submit an inquiry to us or sign up for our newsletter, you may be asked to provide certain information such as your contact details (name, e-mail address, mailing address, etc.).
When you submit your personally identifiable information through wn.com, you are giving your consent to the collection, use and disclosure of your personal information as set forth in this Privacy Policy. If you would prefer that we not collect any personally identifiable information from you, please do not provide us with any such information. We will not sell or rent your personally identifiable information to third parties without your consent, except as otherwise disclosed in this Privacy Policy.
Except as otherwise disclosed in this Privacy Policy, we will use the information you provide us only for the purpose of responding to your inquiry or in connection with the service for which you provided such information. We may forward your contact information and inquiry to our affiliates and other divisions of our company that we feel can best address your inquiry or provide you with the requested service. We may also use the information you provide in aggregate form for internal business purposes, such as generating statistics and developing marketing plans. We may share or transfer such non-personally identifiable information with or to our affiliates, licensees, agents and partners.
We may retain other companies and individuals to perform functions on our behalf. Such third parties may be provided with access to personally identifiable information needed to perform their functions, but may not use such information for any other purpose.
In addition, we may disclose any information, including personally identifiable information, we deem necessary, in our sole discretion, to comply with any applicable law, regulation, legal proceeding or governmental request.
We do not want you to receive unwanted e-mail from us. We try to make it easy to opt-out of any service you have asked to receive. If you sign-up to our e-mail newsletters we do not sell, exchange or give your e-mail address to a third party.
E-mail addresses are collected via the wn.com web site. Users have to physically opt-in to receive the wn.com newsletter and a verification e-mail is sent. wn.com is clearly and conspicuously named at the point of
collection.If you no longer wish to receive our newsletter and promotional communications, you may opt-out of receiving them by following the instructions included in each newsletter or communication or by e-mailing us at michaelw(at)wn.com
The security of your personal information is important to us. We follow generally accepted industry standards to protect the personal information submitted to us, both during registration and once we receive it. No method of transmission over the Internet, or method of electronic storage, is 100 percent secure, however. Therefore, though we strive to use commercially acceptable means to protect your personal information, we cannot guarantee its absolute security.
If we decide to change our e-mail practices, we will post those changes to this privacy statement, the homepage, and other places we think appropriate so that you are aware of what information we collect, how we use it, and under what circumstances, if any, we disclose it.
If we make material changes to our e-mail practices, we will notify you here, by e-mail, and by means of a notice on our home page.
The advertising banners and other forms of advertising appearing on this Web site are sometimes delivered to you, on our behalf, by a third party. In the course of serving advertisements to this site, the third party may place or recognize a unique cookie on your browser. For more information on cookies, you can visit www.cookiecentral.com.
As we continue to develop our business, we might sell certain aspects of our entities or assets. In such transactions, user information, including personally identifiable information, generally is one of the transferred business assets, and by submitting your personal information on Wn.com you agree that your data may be transferred to such parties in these circumstances.