Class: Lutaml::Xsd::XsdSpecValidator

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/xsd/xsd_spec_validator.rb

Overview

Validates XSD schemas against W3C XSD specification Single responsibility: check spec compliance

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(repository, version: "1.0") ⇒ XsdSpecValidator

Returns a new instance of XsdSpecValidator.



10
11
12
13
# File 'lib/lutaml/xsd/xsd_spec_validator.rb', line 10

def initialize(repository, version: "1.0")
  @repository = repository
  @version = version # '1.0' or '1.1'
end

Instance Attribute Details

#repositoryObject (readonly)

Returns the value of attribute repository.



8
9
10
# File 'lib/lutaml/xsd/xsd_spec_validator.rb', line 8

def repository
  @repository
end

#versionObject (readonly)

Returns the value of attribute version.



8
9
10
# File 'lib/lutaml/xsd/xsd_spec_validator.rb', line 8

def version
  @version
end

Instance Method Details

#validateObject

Validate all schemas in repository Returns SpecComplianceReport



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/lutaml/xsd/xsd_spec_validator.rb', line 17

def validate
  errors = []
  warnings = []

  # Apply validation rules based on XSD version
  validation_rules.each do |rule|
    rule_result = rule.validate(repository)
    errors.concat(rule_result[:errors])
    warnings.concat(rule_result[:warnings])
  end

  SpecComplianceReport.new(
    version: @version,
    valid: errors.empty?,
    errors: errors,
    warnings: warnings,
    schemas_checked: repository.all_schemas.size,
  )
end