XSLT explicado

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...

¿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 otro formato, como HTML, JSON o incluso otro documento XML. Esto se hace mediante el uso de identificadores XPath y elementos de etiquetas XSL. Para una transformación de un documento XML a otro, puede utilizar un elemento de plantilla XSLT, que utiliza un archivo XSLT existente para definir el aspecto que debe tener el XML resultante.

\

¿Por qué es útil XSLT?

La utilidad de XSLT se puede mostrar mejor con un ejemplo. Así que 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>

Tal vez 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>

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

Mi colección de coches

Haz un modelo Lamborghini Gallardo


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

Para otro ejemplo, tal vez trabaje para una empresa que recibe datos XML de sus proveedores que detallan cuánto inventario tienen disponible para sus productos, de la A a la Z. Pero solo le interesan los productos S, R y W, por lo que en lugar de almacenar toda esa información innecesaria, 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 a mayor escala resultaría en mucho 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 el 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 usar XSLT, incluidos 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 el 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 fácilmente [transformar XML a JSON] (http://www.bramstein.com/projects/xsltjson/).

Recursos