Class: Lutaml::Xml::NamespaceResolutionStrategy

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/xml/namespace_resolution_strategy.rb

Overview

Strategy for resolving namespace for an XML element

Encapsulates the logic for determining:

  • Whether element should use prefix

  • Which prefix to use

  • Which namespace URI applies

  • Whether xmlns=“” should be explicitly added

This is created by DeclarationPlanner and stored in DeclarationPlan for execution by adapters.

Examples:

Using a strategy

strategy = BlankNamespaceStrategy.new
ns_info = strategy.resolve
# => { use_prefix: false, prefix: nil, uri: nil, requires_blank_xmlns: false }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(use_prefix:, prefix: nil, namespace_uri: nil, requires_blank_xmlns: false) ⇒ NamespaceResolutionStrategy

Initialize the strategy with namespace resolution info

Parameters:

  • use_prefix (Boolean)

    Whether to use prefix format

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

    The prefix to use (if any)

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

    The namespace URI (if any)

  • requires_blank_xmlns (Boolean) (defaults to: false)

    Whether to explicitly add xmlns=“”



30
31
32
33
34
35
36
# File 'lib/lutaml/xml/namespace_resolution_strategy.rb', line 30

def initialize(use_prefix:, prefix: nil, namespace_uri: nil,
  requires_blank_xmlns: false)
  @use_prefix = use_prefix
  @prefix = prefix
  @namespace_uri = namespace_uri
  @requires_blank_xmlns = requires_blank_xmlns
end

Instance Attribute Details

#namespace_uriObject (readonly)

Returns the value of attribute namespace_uri.



22
23
24
# File 'lib/lutaml/xml/namespace_resolution_strategy.rb', line 22

def namespace_uri
  @namespace_uri
end

#prefixObject (readonly)

Returns the value of attribute prefix.



22
23
24
# File 'lib/lutaml/xml/namespace_resolution_strategy.rb', line 22

def prefix
  @prefix
end

#requires_blank_xmlnsObject (readonly)

Returns the value of attribute requires_blank_xmlns.



22
23
24
# File 'lib/lutaml/xml/namespace_resolution_strategy.rb', line 22

def requires_blank_xmlns
  @requires_blank_xmlns
end

#use_prefixObject (readonly)

Returns the value of attribute use_prefix.



22
23
24
# File 'lib/lutaml/xml/namespace_resolution_strategy.rb', line 22

def use_prefix
  @use_prefix
end

Instance Method Details

#resolveHash

Returns namespace info ready for adapter use

Returns:

  • (Hash)

    Hash with :use_prefix, :prefix, :uri, :requires_blank_xmlns keys



41
42
43
44
45
46
47
48
# File 'lib/lutaml/xml/namespace_resolution_strategy.rb', line 41

def resolve
  {
    use_prefix: @use_prefix,
    prefix: @prefix,
    uri: @namespace_uri,
    requires_blank_xmlns: @requires_blank_xmlns,
  }
end