Class: Lutaml::Xsd::Validation::Validator

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

Overview

Validator provides the main facade for XML validation against XSD schemas

This class serves as the primary entry point for validating XML instances against XSD schemas loaded from packages or repositories. It handles schema resolution, configuration loading, and delegates the actual validation work to ValidationJob.

Examples:

Validate XML with a schema package

validator = Lutaml::Xsd::Validator.new("schemas.lxr")
result = validator.validate("<root>...</root>")
puts result.valid? ? "Valid!" : "Invalid: #{result.errors}"

Validate with custom configuration

config = Lutaml::Xsd::Validation::ValidationConfiguration.from_file("config.yml")
validator = Lutaml::Xsd::Validator.new("schemas.lxr", config: config)
result = validator.validate(xml_content)

Validate with schema repository

repo = Lutaml::Xsd::SchemaRepository.from_package("schemas.lxr")
validator = Lutaml::Xsd::Validator.new(repo)
result = validator.validate(xml_content)

Instance Method Summary collapse

Constructor Details

#initialize(schema_source, config: nil) ⇒ Validator

Initialize a new Validator

Parameters:

  • schema_source (String, SchemaRepository)

    Path to schema package (.lxr file) or a SchemaRepository instance

  • config (Hash, String, ValidationConfiguration, nil) (defaults to: nil)

    Configuration options as a Hash, path to YAML config file, ValidationConfiguration instance, or nil for defaults

Raises:



43
44
45
46
47
# File 'lib/lutaml/xsd/validation/validator.rb', line 43

def initialize(schema_source, config: nil)
  @repository = resolve_repository(schema_source)
  @config = load_configuration(config)
  @rule_registry = build_rule_registry
end

Instance Method Details

#validate(xml_content) ⇒ ValidationResult

Validate an XML document against the loaded schema

Parameters:

  • xml_content (String)

    The XML content to validate

Returns:

  • (ValidationResult)

    The validation result containing errors and validation status

Raises:

  • (ArgumentError)

    if xml_content is nil or empty



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/lutaml/xsd/validation/validator.rb', line 57

def validate(xml_content)
  raise ArgumentError, "xml_content cannot be nil" if xml_content.nil?

  if xml_content.empty?
    raise ArgumentError,
          "xml_content cannot be empty"
  end

  job = Validation::ValidationJob.new(
    xml_content: xml_content,
    repository: @repository,
    rule_registry: @rule_registry,
    config: @config,
  )

  job.execute
end