validate_xml_xsi 0.1.3 → 0.2.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -0
- data/bin/validate_xml_xsi +1 -1
- data/lib/validate_xml_xsi.rb +15 -16
- data/validate_xml_xsi.gemspec +3 -3
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd9945266a2c29343a35a65c781dfef0fdc7338f70127ecf1b922c114cfd0d94
|
4
|
+
data.tar.gz: 9a38160f434f39a28e6fe1c6230e164ff975bd20675dff3524236e1b90d051da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 25bca27d272577cf6af92a6e46978158fe0f277dcb40eaff1634907fa34e28e641f7eb205bccb1030a83a150ae7c2c33b736d983d0e6da9ca3b8f644365f9ae0
|
7
|
+
data.tar.gz: 22e380124fcd7afd9e576ec0cfa7273c96fb273563afd78ec6dc540ce662f5b07d62b375c856b86a01f256e5ee49cf1bff566de65af78d7f242669e25a976270
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## v0.2.1
|
2
|
+
|
3
|
+
* Update namespace to XML_XSI in bin/validate_xml_xsi utility
|
4
|
+
|
5
|
+
## v0.2.0
|
6
|
+
|
7
|
+
* Change namespace to XML_XSI and rename/promote Validation::Error to Schema::ValidationError < StandardError.
|
8
|
+
|
9
|
+
## v0.1.4
|
10
|
+
|
11
|
+
* Change module XML, Validation, & Schema to be classes instead.
|
12
|
+
|
1
13
|
## v0.1.3
|
2
14
|
|
3
15
|
* Rev Nokogiri requirement to >= 1.13.2 for CVE-2021-30560 & CVE-2022-23308
|
data/bin/validate_xml_xsi
CHANGED
data/lib/validate_xml_xsi.rb
CHANGED
@@ -1,18 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'nokogiri'
|
3
3
|
|
4
|
-
|
5
|
-
module Validation
|
6
|
-
class Error
|
7
|
-
Params = [:type, :file, :line, :column, :message, :err]
|
8
|
-
attr_reader *Params, :description
|
9
|
-
def initialize(*args)
|
10
|
-
Params.each.with_index { |param, idx| instance_variable_set("@#{param.to_s}", args[idx]) }
|
11
|
-
@description = "#{@type.to_s} ERROR [#{@file}:#{@line}:#{@column}]: #{@message}".freeze
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
4
|
+
class XML_XSI
|
16
5
|
def self.parse(obj)
|
17
6
|
filename = nil
|
18
7
|
obj = File::read(filename = obj) if obj.is_a?(String) && File::exist?(obj)
|
@@ -22,9 +11,19 @@ module XML
|
|
22
11
|
xml_doc
|
23
12
|
end
|
24
13
|
|
25
|
-
|
14
|
+
class Schema
|
15
|
+
class ValidationError < StandardError
|
16
|
+
Params = [:type, :file, :line, :column, :message, :err]
|
17
|
+
attr_reader *Params, :description
|
18
|
+
def initialize(*args)
|
19
|
+
Params.each.with_index { |param, idx| instance_variable_set("@#{param.to_s}", args[idx]) }
|
20
|
+
@description = "#{@type.to_s} ERROR [#{@file}:#{@line}:#{@column}]: #{@message}".freeze
|
21
|
+
super(@description)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
26
25
|
def self.validate(xml_doc)
|
27
|
-
xml_doc =
|
26
|
+
xml_doc = XML_XSI::parse(xml_doc) unless xml_doc.is_a?(Nokogiri::XML::Document)
|
28
27
|
errors = []
|
29
28
|
## Build an all-in-one XSD document that imports all of the separate schema locations
|
30
29
|
xsd_doc = "<?xml version=\"1.0\"?>\n"
|
@@ -52,13 +51,13 @@ module XML
|
|
52
51
|
xsd = Nokogiri::XML.Schema(xsd_doc)
|
53
52
|
xsd.errors.each do |err|
|
54
53
|
err_msg = (/ERROR: /.match(err.message)) ? $' : err.message
|
55
|
-
errors <<
|
54
|
+
errors << ValidationError.new(:XSD, err.file, err.line, err.column, err_msg, err)
|
56
55
|
end
|
57
56
|
errs = xsd.validate(xml_doc)
|
58
57
|
errs.each do |err|
|
59
58
|
err_msg = (/ERROR: /.match(err.message)) ? $' : err.message
|
60
59
|
fname = (err.file.nil?) ? xml_doc.filename : err.file
|
61
|
-
errors <<
|
60
|
+
errors << ValidationError.new(:XML, fname, err.line, err.column, err_msg, err)
|
62
61
|
end
|
63
62
|
errors
|
64
63
|
end
|
data/validate_xml_xsi.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "validate_xml_xsi"
|
3
|
-
spec.version = "0.1
|
3
|
+
spec.version = "0.2.1"
|
4
4
|
spec.authors = ["David Hansen"]
|
5
5
|
spec.email = ["david@hansen4.net"]
|
6
6
|
|
@@ -22,8 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
|
25
|
-
spec.add_development_dependency "bundler", "
|
26
|
-
spec.add_development_dependency "rake", "
|
25
|
+
spec.add_development_dependency "bundler", ">= 2.1"
|
26
|
+
spec.add_development_dependency "rake", ">= 13.0"
|
27
27
|
|
28
28
|
spec.add_dependency "nokogiri", ">= 1.13.2"
|
29
29
|
end
|
metadata
CHANGED
@@ -1,41 +1,41 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validate_xml_xsi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Hansen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-03-
|
11
|
+
date: 2022-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '2.1'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
@@ -91,7 +91,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
91
91
|
- !ruby/object:Gem::Version
|
92
92
|
version: '0'
|
93
93
|
requirements: []
|
94
|
-
rubygems_version: 3.
|
94
|
+
rubygems_version: 3.3.8
|
95
95
|
signing_key:
|
96
96
|
specification_version: 4
|
97
97
|
summary: Validate XML against it's embedded XSI elements that define the XSD's.
|