Looking for xslt Answers? Try Ask4KnowledgeBase
Looking for xslt Keywords? Try Ask4Keywords

xsltEmpezando con xslt


Observaciones

XSLT (XSL Transformations, Extensible Stylesheet Language Transformations) es un lenguaje de programación que se basa en XML y cuyo propósito es manipular y transformar XML. Es un lenguaje de programación funcional y un estándar W3C. Usando XSLT puede transformar uno o más documentos XML en un resultado que podría tener una variedad de formatos de salida (XML, HTML, texto).

Para comprender XSLT, es mejor tener un buen conocimiento práctico de:

  1. XML
  2. XPath

Sin estos dos conceptos subyacentes, tendría dificultades para aprender XSLT. En primer lugar, porque un documento XSLT es un documento XML. Y en segundo lugar, los documentos XSLT utilizan XPath para consultar el documento XML que se está transformando.

Lectura recomendada: https://en.wikipedia.org/wiki/XSLT

Versiones

Versión Especificación Estado Fecha de lanzamiento
XSLT 1.0 https://www.w3.org/TR/xslt Recomendación 1998-08-18
XSLT 2.0 https://www.w3.org/TR/xslt20 Recomendación 2007-01-23
XSLT 3.0 https://www.w3.org/TR/xslt-30 Recomendación del candidato 2015-11-19

Instalación o configuración

XSLT es un lenguaje de programación especial; se utiliza ampliamente para transformar documentos XML en un formato XML diferente, en HTML o en formatos basados ​​en texto.

Hay dos versiones principales de XSLT en uso: XSLT 1.0 y XSLT 2.0. XSLT 1.0 se implementa más ampliamente, pero tiene muchas restricciones y limitaciones en comparación con XSLT 2.0; Tendrá que decidir qué versión utilizar. Si un procesador XSLT 2.0 está disponible para su entorno elegido, entonces esta es casi siempre la mejor opción.

(XSLT 1.0 salió a la venta en noviembre de 1999, y aparecieron muchas implementaciones en un año o dos, tanto de proveedores tradicionales como Microsoft, IBM, Sun y Oracle, como de entusiastas individuales que trabajaban en su tiempo libre. XSLT 2.0 salió en enero 2007, y muchos de los procesadores 1.0 originales nunca se actualizaron, porque sus desarrolladores habían perdido interés. El procesador XSLT 2.0 más utilizado es Saxon, pero no tiene el campo para sí mismo: otros productos independientes incluyen RaptorXML (de Altova ), XmlPrime (de CBCL) y Exselt, y los procesadores 2.0 también están disponibles incrustados en WebLogic de IBM, en el servidor de bases de datos XML de MarkLogic y en el Acelerador de XML de Intel.

La especificación de XSLT 3.0 es técnicamente completa (recomendación propuesta en abril de 2017), pero por el momento es mejor considerarla como un punto de inflexión: considérelo solo si tiene una necesidad urgente de sus nuevas funciones, como transmisión, paquetes, soporte JSON , o probar / atrapar. Hay tres implementaciones conocidas: Saxon, Exselt y RaptorXML.

Para comenzar con XSLT tienes varias opciones:

  • Utilice una herramienta XSLT en línea. Hay varios disponibles (busque "herramienta XSLT en línea"), un IDE en línea muy confiable es http://xsltransform.net/ . Esta es una buena manera de obtener una idea inicial del lenguaje, pero no querrá continuar de esta manera una vez que esté haciendo un desarrollo real.

  • Utilice el motor XSLT integrado en cada navegador. Al igual que con las herramientas en línea, estas tienen la ventaja de que no necesita instalar nada; pero los navegadores solo admiten XSLT 1.0, solo admiten la conversión de XML a HTML y tienen un soporte de depuración muy débil. Un desarrollo muy reciente, pero aún experimental, es Saxon-JS, que permite la ejecución de XSLT 2.0 (y partes de XSLT 3.0) en el navegador.

  • Instale un procesador XSLT (como Saxon o xsltproc). La mayoría de estos productos se pueden invocar utilizando la línea de comandos del sistema operativo o utilizando una API para lenguajes de programación particulares, como Java, C, C # o Python.

  • Instale un entorno de desarrollo XML como Altova XML Spy, oXygen de SyncroSoft o Stylus Studio. Si bien esta es una opción más costosa, brinda una capacidad de depuración y soporte de desarrollo mucho más rica.

Cualquiera que sea la opción que elija, primero debe decidir si desea utilizar XSLT 1.0 o XSLT 2.0.

Ejemplo simple de XSLT

Aquí hay un ejemplo simple que usa XSLT para convertir datos en un archivo XML en una tabla en un archivo HTML. Puedes usarlo para experimentar con simples transformaciones XSLT.

Requisito previo: Instale un entorno de ejecución de Java y agregue la ubicación del JRE a su variable PATH. (En Windows, la mayoría de los instaladores agregarán Java a su ruta). Si esto funciona, debería poder abrir una ventana de línea de comandos y ejecutar el comando java -version y obtener una copia impresa de la información sobre su JRE.

  1. Descargue el procesador Saxon-HE XSLT para Java aquí: saxon.sourceforge.net y descomprímalo en cualquier lugar de su computadora.
  2. En un editor de texto, cree un archivo llamado pets.xml con el siguiente código:
  <pets>
  <petType name="Dogs">
    <pet id="123" name="Sparky" vaccineStatus="vaccinated" healthStatus="healthy"/>
    <pet id="234" name="Sadie" vaccineStatus="unvaccinated" healthStatus="sick"/>
    <pet id="345" name="Herman" vaccineStatus="unvaccinated" healthStatus="unknown"/>
  </petType>
  <petType name="Cats">
    <pet id="456" name="Cleo" vaccineStatus="vaccinated" healthStatus="healthy"/>
    <pet id="567" name="Janet" vaccineStatus="unvaccinated" healthStatus="healthy"/>
    <pet id="678" name="Furry" vaccineStatus="vaccinated" healthStatus="sick"/>
  </petType>
</pets>
  1. En un editor de texto, cree un archivo llamado petTransform.xsl con el siguiente código:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">

<!-- handle the root XML element -->
<xsl:template match="/">
<html><head>
  <title>Pets that are available for adoption</title>
</head>
<body>
  <xsl:apply-templates/>
</body>
</html>
</xsl:template>

<xsl:template match="pets">
<xsl:apply-templates/>
</xsl:template>

<xsl:template match="petType">
<h2><xsl:value-of select="@name"/></h2>
<table id="{@name}">
   <tr>
     <th colname="id">ID</th>
     <th colname="name">Name</th>
     <th colname="vaccinated">Vaccine status</th>
     <th colname="health">Health status</th>
   </tr>
   <tbody>
     <!-- add a row for each pet in this category -->
     <xsl:for-each select="pet">
       <tr>
         <td colname="id"><xsl:value-of select="@id"/></td>
         <td colname="name"><xsl:value-of select="@name"/></td>
         <td colname="vaccinated"><xsl:value-of select="@vaccineStatus"/></td>
         <td colname="health"><xsl:value-of select="@healthStatus"/></td>
       </tr>
     </xsl:for-each>
   </tbody>
 </table>
</xsl:template>

<!-- ignore the content of other tags because we processed them elsewhere -->
<xsl:template match="*">
<!-- do nothing -->
</xsl:template>

</xsl:stylesheet>
  1. Abra una ventana de línea de comandos y vaya a la carpeta con los archivos XML y XSLT.
  2. Ejecute el siguiente comando, donde path_to_saxon.jar es la ruta completa al archivo saxon9he.jar :
java -jar "path_to_saxon.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt
 

Por ejemplo:

java -jar "C:\Program Files\SaxonHE9-7-0-7J\saxon9he.jar" -o
petOutput.html -s:pets.xml -xsl:pettransform.xslt
 

Asegúrese de ejecutar este comando en una sola línea.

  1. Abra el archivo de salida petOutput.html en un editor de texto. Debe tener un aspecto como este:
<html>
   <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title>Pets that are available for adoption</title>
   </head>
   <body>
      
      <h2>Dogs</h2>
      <table id="Dogs">
         <tr>
            <th colname="id">ID</th>
            <th colname="name">Name</th>
            <th colname="vaccinated">Vaccine status</th>
            <th colname="health">Health status</th>
         </tr>
         <tbody>
            <tr>
               <td colname="id">123</td>
               <td colname="name">Sparky</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">234</td>
               <td colname="name">Sadie</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">sick</td>
            </tr>
            <tr>
               <td colname="id">345</td>
               <td colname="name">Herman</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">unknown</td>
            </tr>
         </tbody>
      </table>
      
      <h2>Cats</h2>
      <table id="Cats">
         <tr>
            <th colname="id">ID</th>
            <th colname="name">Name</th>
            <th colname="vaccinated">Vaccine status</th>
            <th colname="health">Health status</th>
         </tr>
         <tbody>
            <tr>
               <td colname="id">456</td>
               <td colname="name">Cleo</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">567</td>
               <td colname="name">Janet</td>
               <td colname="vaccinated">unvaccinated</td>
               <td colname="health">healthy</td>
            </tr>
            <tr>
               <td colname="id">678</td>
               <td colname="name">Furry</td>
               <td colname="vaccinated">vaccinated</td>
               <td colname="health">sick</td>
            </tr>
         </tbody>
      </table>
      
   </body>
</html>
 
  1. Abra el archivo de salida petOutput.html en un navegador web. Debe mostrar los datos en una tabla simple.