Something wrong with splats in my previous commit...backing out until I figure this...
[jruby.git] / samples / xslt.rb
blobb020a5f4ad0d5667a090e72bcd540efbefda8d58
1 include Java
2 require 'optparse'
3 require 'ostruct'
5 import java.io.FileOutputStream
6 import javax.xml.transform.stream.StreamSource
7 import javax.xml.transform.TransformerFactory
9 class XSLTOptions
10   def self.parse(args)
11     options = OpenStruct.new
12     options.parameters = {}
13        
14     opts = OptionParser.new do |opts|
15       opts.banner = "Usage: [options] xslt {xml} {xslt} [{result}]"
16       opts.separator ""
17       opts.separator "Specific options:"
18       
19       opts.on("-p", "--parameters name=value,name1=value1", Array) do |n|
20         n.collect do |v| 
21           name, value = v.split(/\s*=\s*/)
22           options.parameters[name] = value
23         end
24       end
25     end  
26     opts.parse!(args)
27     options
28   end
29 end
31 options = XSLTOptions.parse(ARGV)
33 if (ARGV.length < 2 || ARGV.length > 3) 
34   puts "Usage: xslt {xml} {xslt} [{result}]"
35   exit
36 end
38 document = StreamSource.new ARGV[0]
39 stylesheet = StreamSource.new ARGV[1]
40 output = ARGV.length < 3 ? java.lang.System::out : FileOutputStream.new(ARGV[2])
41 result = javax.xml.transform.stream.StreamResult.new output
43 begin
44   transformer = TransformerFactory.newInstance.newTransformer(stylesheet)
45   options.parameters.each {|name, value| transformer.setParameter(name, value) }
46   transformer.transform(document, result)
47 rescue java.lang.Exception => e
48   puts e
49 end