grunt-xsltproc

Apply XSLT stylesheets to XML documents.

grunt-xsltproc

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.

  • 2015-03-21 v0.5.1 Setup Travis CI.
  • 2015-01-19 v0.5.0 Fallback to inline stylesheets.
  • 2014-11-10 v0.4.2 Add option to parse input as HTML.
  • 2014-10-05 v0.4.1 Add option for passing the grunt filepath as stringparam.
  • 2014-04-21 v0.4.0 Add option to use XIncludestyle.
  • 2013-11-16 v0.3.0 Enable processing using the XInclude specification.
  • 2013-10-26 v0.2.1 Add documentation for passing in parameters. Update package.json.
  • 2013-09-13 v0.2.0 Pass params to the stylesheet via the options object.
  • 2013-09-08 v0.1.0 Initial release.