XSL transformation plugin for gulp
example.xml
<?xml version="1.0" encoding="utf-8"?>
<foo>
<bar attr="value">baz</bar>
<bar>qux</bar>
</foo>
template.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="someVariable">defaultValue</xsl:param>
<xsl:param name="anotherVariable"/>
<xsl:template match="foo">
<output>
<xsl:attribute name="attr">
<xsl:value-of select="$someVariable"/>
</xsl:attribute>
<xsl:apply-templates select="$anotherVariable"/>
</output>
</xsl:template>
<xsl:template match="bar">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
</xsl:stylesheet>
task.js
var gulp = require('gulp');
var xslt = require('gulp-xslt');
gulp.task('xsl', function() {
gulp.src('./example.xml')
.pipe(xslt('./template.xsl', {
someVariable: '"someValue"', // string
anotherVariable: '/foo/bar[@attr]' // xpath that will be evaluated
}))
.pipe(gulp.dest('./build/'));
});
Will produce: ./build/example.xml
<?xml version="1.0" encoding="utf-8"?>
<output attr="someValue">
<bar attr="value">baz</bar>
</output>