Apply XSLT stylesheets to XML documents.
This plugin requires Grunt >=0.4.1
If you haven't used Grunt before, be sure to check out the Getting Started guide, as it explains how to create a Gruntfile as well as install and use Grunt plugins. Once you're familiar with that process, you may install this plugin with this command:
npm install grunt-xsltproc --save-dev
Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:
grunt.loadNpmTasks("grunt-xsltproc");
Run this task with the grunt xsltproc
command.
xsltproc is an open-source command line tool for applying XSLT stylesheets to XML documents.
This task requires you to have xsltproc
installed. If you're on OS X or Linux you probably already have it installed. You can check by running xsltproc -version
in your terminal.
First, ensure you have xsltproc
installed. Then, in your project's Gruntfile, add a section named xsltproc
to the data object passed into grunt.initConfig()
.
grunt.initConfig({
xsltproc: {
options: {
// Task-specific options go here.
},
your_target: {
// Target-specific file lists and/or options go here.
},
},
});
Type: String
or false
Path to the XSLT stylesheet to apply to the files. If options.stylesheet
evaluates to false
, xsltproc
will fallback to stylesheets linked from the target document.
Type: Object
Pass an object of parameter name/value pairs to the stylesheet. Parameters are passed directly to the xsltproc
call with the --param
flag.
Type: Object
Pass an object of string parameter name/value pairs to the stylesheet. Parameters are passed directly to the xsltproc
call with the --stringparam
flag.
Type: Boolean
Process the input document using the XInclude specification. More details on this can be found in the XInclude specification.
Type: Boolean
Process the stylesheet using the XInclude specification.
Type: Boolean
Process the input document skipping the DTD loading phase.
Type: Boolean
Pass the grunt filepath as stringparam to the XSLT.
Type: Boolean
The input document is(are) an HTML file(s).
grunt.initConfig({
xsltproc: {
options: {
stylesheet: "test/fixtures/compiler.xsl",
},
compile: {
files: {
"tmp/compile.html": ["test/fixtures/compile.xml"],
},
},
},
});
grunt.initConfig({
xsltproc: {
options: {
stylesheet: "test/fixtures/compiler.xsl",
},
compile: {
files: [
{
expand: true,
cwd: "test/fixtures",
src: "*.xml",
dest: "tmp",
ext: ".html",
},
],
},
},
});
grunt.initConfig({
xsltproc: {
options: {
stylesheet: "test/fixtures/compiler.xsl",
params: {
fav: '/catalogue/album[@id="3"]/title',
},
},
compile: {
files: {
"tmp/compile.html": ["test/fixtures/compile.xml"],
},
},
},
});
grunt.initConfig({
xsltproc: {
options: {
stylesheet: "test/fixtures/compiler.xsl",
stringparams: {
title: "My Music",
},
},
compile: {
files: {
"tmp/compile.html": ["test/fixtures/compile.xml"],
},
},
},
});
Process the input document using the XInclude specification.
grunt.initConfig({
xsltproc: {
options: {
stylesheet: "test/fixtures/compiler.xsl",
xinclude: true,
},
compile: {
files: {
"tmp/compile.html": ["test/fixtures/compile.xml"],
},
},
},
});
Process the stylesheet using the XInclude specification.
grunt.initConfig({
xsltproc: {
options: {
xincludestyle: true,
},
compile: {
options: {
stylesheet: "test/fixtures/compiler.xsl",
},
files: {
"tmp/compile.html": ["test/fixtures/compile.xml"],
},
},
},
});
Process the input documents and using the filepath xsl:param.
grunt.initConfig({
xsltproc: {
compile: {
options: {
stylesheet: 'test/fixtures/template_filepath.xsl'
filepath: true
},
files: [{
expand: true,
cwd: 'test/fixtures',
src: '*.xml',
dest: 'tmp',
ext: '.html'
}]
}
}
})
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" encoding="utf-8" indent="yes" omit-xml-declaration="yes"/>
<xsl:param name="filepath"/>
<xsl:template match="/">
...
</xsl:template>
</xsl:stylesheet>
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.