flazz-schematron 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. data/Rakefile +14 -0
  2. data/bin/validate +57 -0
  3. data/bin/validate-sh +9 -0
  4. data/schematron.gemspec +14 -0
  5. metadata +56 -0
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ require 'rake'
2
+ require 'rake/rdoctask'
3
+ require 'spec/rake/spectask'
4
+
5
+ Spec::Rake::SpecTask.new('spec') do |t|
6
+ t.libs << 'lib'
7
+ t.libs << 'spec'
8
+ t.spec_opts << "--color"
9
+ # t.warning = true
10
+ # t.rcov = true
11
+ # t.rcov_opts += ["-x /Library", "-x spec"]
12
+ end
13
+
14
+ task :default => [:spec]
data/bin/validate ADDED
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'libxml'
4
+ require 'libxslt'
5
+
6
+ include LibXML
7
+ include LibXSLT
8
+
9
+ # The location of the ISO schematron implemtation lives
10
+ # Change this as needed
11
+ ISO_IMPL_DIR = 'iso_impl'
12
+
13
+ # The file names of the compilation stages
14
+ ISO_FILES = [ 'iso_dsdl_include.xsl',
15
+ 'iso_abstract_expand.xsl',
16
+ 'iso_svrl.xsl' ]
17
+
18
+ # Namespace prefix declarations for use in XPaths
19
+ NS_PREFIXES = {
20
+ 'svrl' => 'http://purl.oclc.org/dsdl/svrl'
21
+ }
22
+
23
+ # Tell the parse to remember the line numbers for each node
24
+ XML::Parser::default_line_numbers = true
25
+
26
+ # Get sch and xml from command line
27
+ schema_doc = XML::Document.file ARGV[0]
28
+ instance_doc = XML::Document.file ARGV[1]
29
+
30
+ # Compile schematron into xsl that maps to svrl
31
+ xforms = ISO_FILES.map do |file|
32
+
33
+ Dir.chdir(ISO_IMPL_DIR) do
34
+ doc = XML::Document.file file
35
+ XSLT::Stylesheet.new doc
36
+ end
37
+
38
+ end
39
+
40
+ validator_doc = xforms.inject(schema_doc) { |xml, xsl| xsl.apply xml }
41
+ validator_xsl = XSLT::Stylesheet.new validator_doc
42
+
43
+ # Validate the xml
44
+ results_doc = validator_xsl.apply instance_doc
45
+
46
+ # Print the errors
47
+ results_doc.root.find('//svrl:failed-assert', NS_PREFIXES).each do |assert|
48
+ context = instance_doc.root.find_first assert['location']
49
+
50
+ assert.find('svrl:text/text()', NS_PREFIXES).each do |message|
51
+ puts '%s "%s" on line %d: %s' % [ context.node_type_name,
52
+ context.name,
53
+ context.line_num,
54
+ message.content.strip ]
55
+ end
56
+
57
+ end
data/bin/validate-sh ADDED
@@ -0,0 +1,9 @@
1
+ #!/bin/sh
2
+
3
+ my_schema=$1
4
+ my_document=$2
5
+
6
+ xsltproc iso_impl/iso_dsdl_include.xsl $my_schema | \
7
+ xsltproc iso_impl/iso_abstract_expand.xsl - | \
8
+ xsltproc iso_impl/iso_svrl.xsl - | \
9
+ xsltproc - $my_document
@@ -0,0 +1,14 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = "schematron"
3
+ spec.version = '0.0.0'
4
+ spec.summary = "ISO Schematron Validation"
5
+ spec.email = "flazzarino@gmail.com"
6
+ spec.homepage = 'http://github.com/flazz/iso-schematron'
7
+ spec.authors = ["Francesco Lazzarino"]
8
+
9
+ spec.files = ["Rakefile", "schematron.gemspec",
10
+ "bin/validate",
11
+ "bin/validate-sh"]
12
+
13
+ spec.has_rdoc = true
14
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: flazz-schematron
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Francesco Lazzarino
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-25 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: flazzarino@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - Rakefile
26
+ - schematron.gemspec
27
+ - bin/validate
28
+ - bin/validate-sh
29
+ has_rdoc: true
30
+ homepage: http://github.com/flazz/iso-schematron
31
+ post_install_message:
32
+ rdoc_options: []
33
+
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: "0"
41
+ version:
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ version:
48
+ requirements: []
49
+
50
+ rubyforge_project:
51
+ rubygems_version: 1.2.0
52
+ signing_key:
53
+ specification_version: 2
54
+ summary: ISO Schematron Validation
55
+ test_files: []
56
+