Class: Rng::ExternalRefResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/rng/external_ref_resolver.rb

Overview

Resolves external href references in RNG schemas.

This class handles two types of external references:

  1. ‘<include href=“uri”/>` at grammar level - merges definitions from external grammar

  2. ‘<externalRef href=“uri”/>` at pattern level - replaces ref with external pattern

Examples:

Parse with external resolution

Rng.parse(rng_xml, location: "/path/to/schema.rng", resolve_external: true)

Defined Under Namespace

Classes: ExternalRefResolutionError

Instance Method Summary collapse

Constructor Details

#initialize(grammar, location: nil) ⇒ ExternalRefResolver

Initialize the resolver

Parameters:

  • grammar (Grammar)

    The grammar to resolve external refs in

  • location (String, nil) (defaults to: nil)

    Base location for resolving relative hrefs



29
30
31
32
# File 'lib/rng/external_ref_resolver.rb', line 29

def initialize(grammar, location: nil)
  @grammar = grammar
  @location = location
end

Instance Method Details

#resolveGrammar

Resolve all external references in the grammar

Returns:

  • (Grammar)

    The resolved grammar



37
38
39
40
# File 'lib/rng/external_ref_resolver.rb', line 37

def resolve
  visited_files = Set.new
  build_resolved_grammar(@grammar, @location, visited_files)
end