XSL

XSL (e Xtensible S tylesheet Language ) es una familia de recomendaciones del consorcio W3C que describe lenguajes para transformar y renderizar documentos XML . Consta de tres partes:

Principales diferencias con CSS

La familia XSL

Transformación XSL

Con XSL, puede transformar un documento XML en cualquier formato, ya sea HTML , WML , RTF , PDF , SQL o incluso SWF (Flash Runner), además de XSL. XSL lleva información sobre cómo se formateará el documento, dónde y cómo se deben ubicar los datos.

Para procesar un documento XML usando XSL, es necesario escribir la siguiente declaración en el documento XML:

<?xml-stylesheet type="text/xsl" href="mi-estilo.xsl"?>

XSLT

El lenguaje XSLT consta de 35 declaraciones, todas las cuales tienen una forma común:

<prefijo:nombre-instrucción [ atributo= "valor" [ atributo= "valor" ]] > </prefijo:nombre-instrucción> ,

donde префиксsuele ser "xsl", pero se pueden usar otros.

Un documento XSLT es siempre un documento XML bien formado ( o válido ) y tiene la siguiente estructura:

<?xml versión="1.0"?> <xsl: versión de hoja de estilo= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" > <xsl:template match= "/" > <!-- conjunto de instrucciones --> </xsl:plantilla> <!-- ... --> </xsl:hoja de estilo>

xsl:stylesheetes el elemento raíz de cualquier documento XSL. Puede anidar etiquetas de nivel superior ( xsl:transformes un sinónimo obsoleto de xsl:stylesheet).

Actualmente, el procesador XSLT más disponible para Microsoft Windows es MSXML (incluido con Internet Explorer desde la versión 4.5), para sistemas basados ​​en GNU es xsltproc.

XSL-FO

Un ejemplo de un documento XSL-FO (tomado del Tutorial de objetos de formato XSL ):

<?versión xml="1.0" codificación="iso-8859-1"?> <fo:root xmlns:fo= "http://www.w3.org/1999/XSL/Format" > <fo:layout-master-set> <fo:simple-page-master master-name= "my- página" > <fo:region-body margin= "1in" /> </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence master-reference= "my-page" > <fo:flow flow-name= "xsl-region-body" > <fo:block> ¡Hola, mundo! </fo:block> </fo:flow> </fo:page-sequence> </fo:root>

Ejemplos

Bucle recursivo

XML:

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="for.xsl"?> <root/>

para.xsl:

<?xml versión="1.0"?> <xsl: versión de hoja de estilo= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" > <xsl: coincidencia de plantilla= "raíz" > <HTML> <CUERPO> <xsl:nombre de la plantilla de llamada= "para" > <xsl:with-param name= "i" select= "1" /> <xsl:with-param name= "n" select= "5" /> </xsl:plantilla-de-llamada> </BODY> </HTML> </xsl:plantilla> <xsl: nombre de la plantilla= "para" > <xsl:paramname = "i" /> <xsl:paramname = "n" /> <xsl:valor-de- seleccionar= "$i" /> <xsl:if prueba= "$i < $n" > <xsl:texto> , </xsl:texto> <xsl:nombre de la plantilla de llamada= "para" > <xsl:con-parámetro nombre= "i" select= "$i+1" /> <xsl:con-parámetro nombre= "n" select= "$n" /> </xsl:plantilla-de-llamada> </xsl:si> </xsl:plantilla> </xsl:hoja de estilo>

Resultado:

1, 2, 3, 4, 5

Agrupación y clasificación de valores

XML:

<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="years.xsl"?> <root> <objeto año= "2003" /> <objeto año= "2001" /> <objeto año= "2005" /> <objeto año= "2005" /> <objeto año= "2003" /> <objeto año= "2006" /> <objeto año= "2006" /> <objeto año = "2006" /> <objeto año= "2005" /> <objeto año= "2001" /> </root>

años.xsl:

<?xml version="1.0"?> <xsl:stylesheet version= "1.0" xmlns:xsl= "http://www.w3.org/1999/XSL/Transform" > <xsl:key name= "años" coincidencia = "/raíz/objeto" uso = "@año" /> <xsl: plantilla coincidencia = "raíz" prioridad = "-1" > <HTML> <CUERPO> <xsl: para cada selección = "objeto [generar -id()=generar-id(clave('años',@año))]" > <xsl:sort select= "@year" order= "descending" /> <xsl:value-of select= "@year " /> <xsl:if test= "posición()!=último()" > <xsl:texto> , </xsl:texto> </xsl:if> </xsl:for-each> </BODY> </HTML> </xsl:plantilla> </xsl:hoja de estilo>

Resultado:

2006, 2005, 2003, 2001

Véase también

Enlaces