Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
TRANSFORMACIONES: XSL-T
TRANSFORMACIONES: XSL-T
• XSL (Extensible Stylesheet Language – lenguaje de hojas de estilo extensible)
• Es la parte del estándar XML que sirve para transformar documentos XML en
otros documentos XML (como por ejemplo, XHTML, WML, etc.)
• Normalmente XSLT lo hace transformando cada elemento XML en otro
elemento XML. También puede añadir otros elementos XML a la salida, o bien
puede eliminar elementos. Asimismo puede reordenar o recolocar elementos y
hacer comprobaciones y tomar decisiones sobre qué elementos mostrar.
• Durante la transformación, XSLT utiliza XPath para especificar o referenciar a
partes del documento que cumplen uno o más patrones definidos. Cuando
encuentra una coincidencia de patrones, XSLT transformará la parte
coincidente del documento origen en el documento destino. Las partes no
coincidentes no se transformarán, quedan en el documento destino sin cambio.
TRANSFORMACIONES: XSL-T
• Una transformación simple.
<xsl:stylesheet versión=“1.0”
xmlns:xsl=http://www.w3.org/1993/XSL/Transform”>
TRANSFORMACIONES: XSL-T
• Una transformación simple.
El fichero XML de ejemplo que transformaremos es el siguiente:
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="expediente.xsl"?>
<expediente alumno="Linus Torvalds">
<asignatura id="1">
<nombre>
Programación básica
</nombre>
<nota>
Notable
</nota>
</asignatura>
<asignatura id="2">
<nombre>
Sistemas operativos
</nombre>
<nota>
Excelente
</nota>
</asignatura>
</expediente>
TRANSFORMACIONES: XSL-T
<?xml version="1.0" encoding="ISO-8859-1"?>
• Una transformación simple. <xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
El documento XSL para version="1.0">
<xsl:template match="/">
convertir este documento XML <html>
en otro XHTML es: <body>
<h2>Expediente académico</h2>
<table border="1">
<tr bgcolor="#9acd32">
Si disponemos de un <th align="left">Asignatura</th>
<th align="left">Nota</th>
navegador con soporte XSL </tr>
(como Mozilla en versiones <xsl:for-each select="expediente/asignatura">
<tr>
superiores a la 1.2) para abrir <td><xsl:value-of select="nombre"/></td>
el documento XML, el <td><xsl:value-of select="nota"/></td>
</tr>
navegador utilizará el </xsl:for-each>
documento XSL para </table>
</body>
transformarlo en XHTML. </html>
</xsl:template>
</xsl:stylesheet>
TRANSFORMACIONES: XSL-T
• El elemento xsl: template
Elemento xsl:if
El elemento xsl:if nos permite aplicar una plantilla sólo en el caso de que la
condición especificada se cumpla (sea cierta).
Un ejemplo de formato de xsl:if es el siguiente:
<xsl:if test=“nota < 5”>
..... sólo aparecerá con nota menor a 5 .....
</xsl:if>
TRANSFORMACIONES: XSL-T
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>Expediente Académico</h2>
<table border="1">
Por ejemplo, podemos modificar el <tr bgcolor="#9acd32">
código anterior para que <th align="left">Asignatura</th>
<th align="left">Nota</th>
sólo muestre las notas superiores a 5. </tr>
<xsl:for-each select="expediente/asignatura">
<xsl:if test="nota > 5">
<tr>
<td><xsl:value-of select="nombre"/></td>
<td><xsl:value-of select="nota"/></td>
</tr>
</xsl:if>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
TRANSFORMACIONES: XSL-T
El elemento xsl:choose
El elemento xsl:choose (junto con xsl:when y xsl:otherwise), nos permite
modelar tests condicionales múltiples. Esto es, podemos, en función de una
condición múltiple (con múltiples valores posibles), obtener resultados diversos.