Two related languages for restructuring and formatting XML data. XSLT (XSL Transformations) allow rules to be specified that restructure XML data, while XSL-FO (XSL Formatting Objects) specify formatting details for presentation in print or on screen. Both languages are themselves applications of XML, and both use XPath as a sublanguage for the identification of those nodes (elements, attributes, character data, etc.) subject each rule. Although they were intended to be used together, in practice XSLT is far more widely used than XSL-FO. Its abilities exactly fulfilled a widespread need for a standard and convenient method of transforming XML data, whereas formatting on web browsers was already adequately addressed by the less sophisticated but widely established CSS.
http://www.w3.org/TR/xslt-30/ The XSLT (version 3.0) specification
http://www.w3.org/TR/xslfo20/ The XSL-FO (version 2.0) specification