Class: Lutaml::Xml::HoistingAlgorithm::FirstUsage

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

Overview

FirstUsage Algorithm

Declares namespace only at the literal first element that uses it. No hoisting - each element declares its own namespace.

Examples:

<parent>
  <ns:child1 xmlns:ns="...">...</ns:child1>
  <ns:child2 xmlns:ns="...">...</ns:child2>  <!-- Repeated -->
</parent>

Instance Method Summary collapse

Instance Method Details

#should_hoist_here?(element, namespace_class, _needs, context) ⇒ Boolean

Returns:

  • (Boolean)


102
103
104
105
106
107
108
109
110
# File 'lib/lutaml/xml/hoisting_algorithm.rb', line 102

def should_hoist_here?(element, namespace_class, _needs, context)
  return false if already_hoisted?(namespace_class, context)

  # Only declare if this element DIRECTLY uses the namespace
  element.namespace_class == namespace_class ||
    element.attributes.any? do |a|
      a.namespace_class == namespace_class
    end
end