Intro a XSLT
De WikiEducator
< Usuario:Lmorillas | modulo lenguajes de marcas | xml
Revisión a fecha de 18:57 16 feb 2012; Lmorillas (Discusión | contribuciones)
Contenido
¿Qué es?
- XSLT es un lenguaje para transformar documentos XML. Está basado en reglas. Puede filtrar, reordenar secciones etc.
- Formato de salida: xml, html, texto, ...
Enlazar una hora de estilos a un fichero xml
<?xml version="1.0" encoding='ISO-8859-1'?> <?xml-stylesheet href="factura.xsl" type="text/xsl"?> <facturae> ... </facturae>
Proceso de XSLT
- Las reglas template identifican los nodos por patrones (operadores XPath)
- Las acciones pueden ser salida de texto (literal) o instrucciones xslt.
Autor: <xsl:value-of select="nombre" /> <xsl:apply-templates />
¿Cómo crear una hoja de estilo para genera html?
Estructura del árbol
- Dónde está la información y cómo
Generar estructura del html
- Estructura del doc html: head y body
- Dentro de body: apply-templates
Una regla template para cada nodo
- Si no existe una regla para un nodo, se aplica la regla básica: imprimir todos los nodos de texto (built in rules)
Añadir etiquetas html
Reglas predefinidas
<xsl:template match="/|*"> <xsl:apply-templates /> <xsl:template> <xsl:template match="text()|@"> <xsl:value-of select="." /> <xsl:template> <xsl:template match=comment() | processing-instruction() />
Elementos básicos de xslt
template
Una hoja de estilo XSL consiste en un conjunto de reglas llamadas plantillas (templates). Cada elemento <xsl:template> contiene instrucciones de trasformación y presentación para aplicar a un nodo (match)
value-of
Selecciona el valor de un elemento XML y añadirlo al documento resultado de la transformación.
for-each
Permite realizar bucles en XSLT.
sort
Para ordenar nodos
if
La plantilla se aplica sólo si se cumple la condición.
choose - when - otherwise
Condiciones múltiples
apply-templates
Aplica una plantilla al elemento actual o a sus nodos hijos.
Documentación
- http://geneura.ugr.es/~jmerelo/XSLT/XSLT-2001-1ed.htm
- http://geneura.ugr.es/~jmerelo/XSLT/XSLT-HTML-Baeza-2002.htm
- http://www.w3schools.com/xsl/
- http://www.lsi.us.es/docencia/get.php?id=5591