#!/usr/bin/ruby require 'optparse' require 'libxml' require 'schematron' include LibXML if __FILE__ == $0 XML.default_line_numbers = true begin # get args schema_file = ARGV.shift or raise "schematron file required" instance_file = ARGV.shift or raise "instance doc file required" # parse the xml schema_doc = XML::Document.file schema_file instance_doc = XML::Document.file instance_file stron = Schematron::Schema.new schema_doc # validate stron.validate(instance_doc).each do |error| puts '%s "%s" on line %d: %s' % error.values_at(:type, :name, :line, :message) end rescue => e puts "Usage: stron [schematron] [instance doc]" puts e.message exit 1 end end