Permalink
Fetching contributors…
Cannot retrieve contributors at this time
50 lines (41 sloc) 1.26 KB
include Java
require 'optparse'
require 'ostruct'
import java.io.FileOutputStream
import javax.xml.transform.stream.StreamSource
import javax.xml.transform.TransformerFactory
class XSLTOptions
def self.parse(args)
options = OpenStruct.new
options.parameters = {}
opts = OptionParser.new do |opts|
opts.banner = "Usage: [options] xslt {xml} {xslt} [{result}]"
opts.separator ""
opts.separator "Specific options:"
opts.on("-p", "--parameters name=value,name1=value1", Array) do |n|
n.collect do |v|
name, value = v.split(/\s*=\s*/)
options.parameters[name] = value
end
end
end
opts.parse!(args)
options
end
end
options = XSLTOptions.parse(ARGV)
if (ARGV.length < 2 || ARGV.length > 3)
puts "Usage: xslt {xml} {xslt} [{result}]"
exit
end
document = StreamSource.new ARGV[0]
stylesheet = StreamSource.new ARGV[1]
output = ARGV.length < 3 ? java.lang.System::out : FileOutputStream.new(ARGV[2])
result = javax.xml.transform.stream.StreamResult.new output
begin
transformer = TransformerFactory.newInstance.newTransformer(stylesheet)
options.parameters.each {|name, value| transformer.setParameter(name, value) }
transformer.transform(document, result)
rescue java.lang.Exception => e
puts e
end