XSLT explicado

X

¿Qué es XSLT?

XSLT es, en mi opinión, similar a los motores de plantillas Mako y Chameleon. XSLT se utiliza principalmente para transformar algún tipo de lenguaje de marcado estructurado (como XML) a otra forma, como HTML, JSON o incluso otro documento XML. Esto se hace mediante el uso de identificadores XPath y elementos de etiqueta XSL. Para una transformación de un documento XML en otro, puede usar un elemento de plantilla XSLT, que usa un archivo XSLT existente para definir cómo debe verse el XML resultante.

¿Por qué es útil XSLT?

La utilidad de XSLT se puede demostrar mejor con un ejemplo. Entonces, digamos que tenemos el documento XML a continuación:

<?xml version="1.0" encoding="ISO-8859-1"?>
  <collection>
    <car>
      <make>Lamborghini</make>
      <model>Gallardo</model>
      <year>2013</year>
      <price>$250,000</price>
    </car>
    <car>
      <make>Ferrari</make>
      <model>F12</model>
      <year>2012</year>
      <price>$330,000</price>
    </car>
    <car>
      <make>Honda</make>
      <model>Civic</model>
      <year>2004</year>
      <price>$2,500</price>
    </car>
</collection>

Quizás preferimos mostrar partes de este XML en un formato agradable y legible por humanos, como HTML. Entonces, crearíamos una plantilla, como esta:

<?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>
      <h5>My Car Collection</h5>
      <table border="1">
        <tr bgcolor="#EC5923">
          <th>Make</th>
          <th>Model</th>
        </tr>
        <tr>
          <td><xsl:value-of select="collection/car/make"/></td>
          <td><xsl:value-of select="collection/car/model"/></td>
        </tr>
      </table>
    </body>
  </html>
</xsl:template>
</xsl:stylesheet>

El uso de esta plantilla en el XML que teníamos arriba daría como resultado el siguiente HTML:

Mi colección de coches

Haz un modelo

LamborghiniGallardo

Esto, obviamente, es mucho más fácil de leer. Aunque XSLT no es estrictamente necesario para transformar XML en HTML. En su lugar, podría usarlo para transformar XML en una estructura diferente.

Por otro ejemplo, tal vez trabaje para una empresa que recibe datos XML de sus proveedores que detallan la cantidad de inventario que tienen disponible para sus productos, de la A a la Z. Pero solo le interesan los productos S, R y W, así que en lugar de almacenar Toda esa información innecesaria, en su lugar, usaría una plantilla XSLT para extraer solo la información que le interesa, que en este caso son los productos S, R y W. La aplicación de este método en una escala mayor daría como resultado una gran cantidad de memoria guardada y mucho menos desorden con el que lidiar. Además, podría decirse que cambiar el formato del documento sería mucho más fácil que tener que volver a compilar código que hace lo mismo.

Tenga en cuenta que este breve ejemplo solo muestra una pequeña cantidad de lo que XSLT realmente puede hacer. Para tener una mejor idea de lo que es posible, asegúrese de consultar los recursos a continuación.

¿Cómo se usa XSLT?

Hay muchas formas de utilizar XSLT, incluidas navegadores, Java, Python y prácticamente cualquier otro lenguaje de programación que se te ocurra.

Como con todo, las transformaciones XSLT se pueden realizar fácilmente en Python (con la paquete lxml):

import lxml.etree as et

xml = et.parse(xml_filename)
xslt = et.parse(xsl_filename)
transform = et.XSLT(xslt)
newXml = transform(xml)
print(et.tostring(newXml, pretty_print=True))

Y como mencioné antes, XSLT puede transformar XML a JSON.

About the author

Ramiro de la Vega

Bienvenido a Pharos.sh

Soy Ramiro de la Vega, Estadounidense con raíces Españolas. Empecé a programar hace casi 20 años cuando era muy jovencito.

Espero que en mi web encuentres la inspiración y ayuda que necesitas para adentrarte en el fantástico mundo de la programación y conseguir tus objetivos por difíciles que sean.

Add comment

Sobre mi

Últimos Post

Etiquetas

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, aceptas el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad