Visual Studio Code
Es posible llevar a cabo transformaciones XSLT en Visual Studio Code de diferentes formas. En este apartado, presentamos las siguientes:
- Utilizando la extensión XSLT/XPath for Visual Studio Code.
- Utilizando Saxon.
XSLT/XPath for Visual Studio Code
La extensión XSLT/XPath for Visual Studio Code ofrece diferentes funcionalidades, entre las cuales se encuentra la transformación XSLT.
Las transformaciones se pueden realizar a través de tareas (tasks). Para realizar una, debemos seleccionar la opción en el menú Terminal:
A continuación, seleccionamos el procesador XSLT. En este caso, Saxon:
Por último, seguimos los pasos que se piden. Debemos elegir:
- El fichero XML fuente.
- La hoja XSL.
- El nombre del fichero de salida.
Saxon
Otra forma de realizar transformaciones XSLT es utilizando Saxon y la extension Run On Save de forma conjunta.
En primer lugar, debemos instalar la extensión:
En segundo lugar, debemos descargar Saxon en el mismo directorio donde tenemos los ficheros XML y XSLT. Es requisito tener previamente instalado el SDK de Java.
Los ficheros XML, XSLT y los ficheros de Saxon deben estar en el mismo directorio y en el directorio raíz del proyecto. No pueden estar en ningún subdirectorio.
Por último, debemos configurar la extensión utilizando el fichero settings.json
con el siguiente código:
{
"emeraldwalk.runonsave": {
"commands": [
{
"match": "\\.xml|\\.xsl",
"cmd": "java -cp saxon-ee-12.0.jar net.sf.saxon.Transform -s:doc.xml -xsl:style.xsl -o:out.xml"
}
]
}
}
En el código anterior se está configurando que:
doc.xml
sea el documento XML de entrada.style.xsl
sea la hoja XSL utilizada para realizar la transformación.out.xml
sea el documento XML de salida, es decir, el documento resultante tras la transformación XSLT.
La salida del comando ejecutado por la extensión la podemos ver en Output pulsando CTRL+Shift+U y seleccionando Run on Save en el menú desplegable situado en la parte derecha.
Si los archivos no están todos en el mismo directorio y en la raíz, obtendremos el siguiente error:
Error: Could not find or load main class net.sf.saxon.Transform
Caused by: java.lang.ClassNotFoundException: net.sf.saxon.Transform