Introducción a XSLT: Transformaciones XML para Principiantes e Intermedios

XSLT (Extensible Stylesheet Language Transformations) es un lenguaje utilizado para transformar documentos XML en otros formatos, como HTML, texto plano, o incluso en otros documentos XML. XSLT es una herramienta poderosa que permite a los desarrolladores manipular y presentar datos XML de una manera flexible y eficiente. En este artículo, proporcionaremos una introducción a XSLT con ejemplos prácticos adecuados para niveles principiantes e intermedios.

¿Qué es XSLT?

XSLT es parte de la familia de tecnologías XSL, que también incluye XSL-FO (Formatting Objects). Utiliza una sintaxis basada en XML para definir reglas de transformación que pueden convertir documentos XML de una estructura a otra. Las transformaciones XSLT son declarativas, lo que significa que se centra en describir el resultado deseado más que el proceso para obtenerlo.

Estructura Básica de un Estilo XSLT

Un archivo XSLT es un documento XML que contiene elementos y atributos del espacio de nombres XSLT. La estructura básica incluye:

  • o : El elemento raíz que define el documento XSLT.
  • : Define una plantilla que se aplica a un patrón de nodos en el documento XML de origen.
  • : Extrae y muestra el valor de un nodo.
  • : Aplica plantillas a los nodos seleccionados.

Ejemplo Básico de Transformación

Imaginemos un documento XML sencillo que describe una lista de empleados:

<employees>
  <employee>
    <name>John Doe</name>
    <position>Developer</position>
    <salary>50000</salary>
  </employee>
  <employee>
    <name>Jane Smith</name>
    <position>Manager</position>
    <salary>75000</salary>
  </employee>
</employees>

Queremos transformar este XML en una lista HTML. Un archivo XSLT para realizar esta transformación podría ser:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <html>
      <body>
        <h2>Employee List</h2>
        <table border="1">
          <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Salary</th>
          </tr>
          <xsl:apply-templates select="employees/employee"/>
        </table>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="employee">
    <tr>
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="position"/></td>
      <td><xsl:value-of select="salary"/></td>
    </tr>
  </xsl:template>
</xsl:stylesheet>

En este ejemplo:

  • El primer coincide con el nodo raíz «/» del documento XML y define la estructura básica del documento HTML de salida.
  • El se utiliza para aplicar plantillas a cada elemento <employee> en el documento XML de origen.
  • El segundo define cómo se debe transformar cada elemento <employee> en una fila de tabla HTML (<tr>), extrayendo los valores de name, position, y salary.

Ejemplos Intermedios de XSLT

Filtrado de Datos

XSLT permite filtrar datos para incluir solo aquellos nodos que cumplen ciertas condiciones. A continuación, se muestra cómo filtrar empleados con un salario superior a 60000.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <html>
      <body>
        <h2>Employees with Salary over 60000</h2>
        <table border="1">
          <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Salary</th>
          </tr>
          <xsl:apply-templates select="employees/employee[salary > 60000]"/>
        </table>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="employee">
    <tr>
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="position"/></td>
      <td><xsl:value-of select="salary"/></td>
    </tr>
  </xsl:template>
</xsl:stylesheet>

En este ejemplo, la expresión XPath salary > 60000 en el atributo select de <xsl:apply-templates> filtra los empleados cuyo salario es superior a 60000.

Uso de Variables

Las variables en XSLT se definen usando el elemento <xsl:variable> y se pueden usar para almacenar valores que se utilizan varias veces o para realizar cálculos complejos.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <html>
      <body>
        <h2>Employee List with Annual Bonus</h2>
        <table border="1">
          <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Salary</th>
            <th>Annual Bonus</th>
          </tr>
          <xsl:apply-templates select="employees/employee"/>
        </table>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="employee">
    <tr>
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="position"/></td>
      <td><xsl:value-of select="salary"/></td>
      <td>
        <xsl:variable name="bonus" select="salary * 0.1"/>
        <xsl:value-of select="$bonus"/>
      </td>
    </tr>
  </xsl:template>
</xsl:stylesheet>

En este ejemplo, se define una variable $bonus que calcula el 10% del salario (salary * 0.1) y se muestra como «Annual Bonus» en la salida HTML.

Ordenamiento de Datos

XSLT permite ordenar datos utilizando el elemento <xsl:sort> dentro de <xsl:for-each> o <xsl:apply-templates>.

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <html>
      <body>
        <h2>Sorted Employee List</h2>
        <table border="1">
          <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Salary</th>
          </tr>
          <xsl:for-each select="employees/employee">
            <xsl:sort select="name" order="ascending"/>
            <tr>
              <td><xsl:value-of select="name"/></td>
              <td><xsl:value-of select="position"/></td>
              <td><xsl:value-of select="salary"/></td>
            </tr>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

En este ejemplo, los empleados se ordenan alfabéticamente por nombre usando <xsl:sort>.

Conclusión

XSLT es una herramienta poderosa y flexible para transformar documentos XML. Desde las transformaciones básicas hasta las más avanzadas, como el filtrado, el uso de variables y el ordenamiento de datos, XSLT ofrece una amplia gama de posibilidades para manipular y presentar datos XML de manera eficiente. Aprender y dominar estas técnicas permite a los desarrolladores crear presentaciones dinámicas y personalizadas de datos XML, mejorando significativamente la capacidad de trabajar con XML en diversas aplicaciones.

close up photo of programming of codes
Photo by luis gomes on Pexels.com
error: Content is protected !!

Descubre más desde InfoGonzalez - Blog de formador e informático

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo

Este sitio web utiliza cookies, si necesitas más información puedes visitar nuestra política de privacidad    Ver
Privacidad
Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.