# Extensible Stylesheet Language

XSL, siglas en inglés de eXtensible Stylesheet Language (‘Lenguaje de hojas de estilo extensible’), es una familia de lenguajes desarrollados por el World Wide Web Consortium (W3C) que permiten describir cómo debe ser presentada la información contenida en un documento XML.
Este lenguaje consta de tres recomendaciones del W3C:
* XSL Transformations (XSLT): permite transformar documentos XML de una sintaxis a otra.
* XSL Formatting Objects (XSL-FO): especifica el formato visual con el cual se quiere presentar el documento.
* XML Path Language (XPath): permite buscar y acceder a los nodos del documento, así como seleccionar partes de este.

## Historia

XSL inició como una propuesta por parte de Microsoft, Inso y Arbortext hacia el W3C en el año 1997. El lenguaje SGML, a partir del cual se creó XML, ya contaba con su propio estándar para la representación de sus documentos, el Document Style Semantics and Specification Language (DSSSL). Por tanto, la idea era crear un lenguaje basado en este para la transformación y representación de documentos XML.
El desarrollo de XSL comenzó en enero de 1998 con la formación del W3C Working Group for XSL. A lo largo del año 1999 se desarrollaron XSLT y XPath y XSL-FO un año después. XSLT y XPath se convirtieron en recomendaciones del W3C en 1999, mientras que XSL-FO la obtuvo en 2001.

## Lenguajes XSL
### XSL Transformations

XSL Transformations (XSLT) presenta una forma de transformar documentos XML en otros e incluso a formatos que no son XML (como HTML).
Esta transformación es realizada utilizando una o varias reglas de plantilla. Estas reglas de plantilla unidas al documento fuente a transformar alimentan un procesador de XSLT, el cual realiza las transformaciones deseadas poniendo el resultado en un archivo de salida, o como en el caso de una página web, las hace directamente en un dispositivo de presentación, como el monitor del usuario.

### XSL Path Language

XML Path Language (XPath) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin formato (plain text). XPath permite buscar y seleccionar teniendo en cuenta la estructura jerárquica del XML.
XPath fue creado para su uso en el estándar XSLT, en el que se usa para seleccionar y examinar la estructura del documento de entrada de la transformación. Para ello, un documento XML es procesado por un analizador (o parser), construyendo un árbol de nodos. Este árbol comienza con un elemento raíz, que se diversifica a lo largo de los elementos que cuelgan de él y acaba en nodos hoja, que contienen solo texto, comentarios, instrucciones de proceso o incluso que están vacíos y solo tienen atributos.

### XSL Formatting Objects

XSL Formatting Objects (XSL-FO) es un lenguaje en el que se especifica cómo se van a formatear los datos de un documento XML para presentarlos en pantalla, papel u otros medios. Hay que destacar que en el documento XSL-FO figuran tanto los datos como el formato que se les va a aplicar.
La unidad básica de trabajo en un documento XSL-FO es el "Formating Object", unidad básica para presentar (formatear) la información. Estos objetos de formato se refieren a páginas, párrafos, tablas, etc.