module Lutaml::Xml::DeclarationPlanQuery
def self.declared_at_root_default_format?(plan, namespace_class)
-
(Boolean)- true if declared at root with default format
Parameters:
-
namespace_class(Class) -- XmlNamespace class -
plan(DeclarationPlan) -- The declaration plan
def self.declared_at_root_default_format?(plan, namespace_class) return false unless namespace_class return false if namespace_class == :blank # :blank has no URI uri = namespace_class.uri ns_info = find_namespace_by_uri(plan, uri) ns_info && ns_info[:declared_at] == :here && ns_info[:format] == :default end
def self.element_needs_xmlns_blank?(plan, element)
-
(Boolean)- true if element needs xmlns=""
Parameters:
-
element(XmlDataModel::XmlElement) -- Element to check -
plan(DeclarationPlan) -- The declaration plan
def self.element_needs_xmlns_blank?(plan, element) # Element with namespace doesn't need xmlns="" return false if element.namespace_class # Check if root declares default namespace (xmlns="...") # If root has default namespace (key nil), blank children need xmlns="" plan.root_node.hoisted_declarations.key?(nil) end
def self.find_namespace_by_uri(plan, uri)
-
(Hash, nil)- { prefix: String|nil, format: Symbol, declared_at: Symbol, uri: String }
Parameters:
-
uri(String) -- Namespace URI to search for -
plan(DeclarationPlan) -- The declaration plan
def self.find_namespace_by_uri(plan, uri) # Performance: Use O(1) lookup on DeclarationPlan plan.find_namespace_by_uri(uri) end
def self.prefix_for(plan, namespace_class)
-
(String, nil)- Prefix string or nil
Parameters:
-
namespace_class(Class) -- XmlNamespace class -
plan(DeclarationPlan) -- The declaration plan
def self.prefix_for(plan, namespace_class) return nil unless namespace_class return nil if namespace_class == :blank # :blank has no URI uri = namespace_class.uri ns_info = find_namespace_by_uri(plan, uri) ns_info&.dig(:prefix) end
def self.prefix_format?(plan, namespace_class)
-
(Boolean)- true if namespace uses prefix format
Parameters:
-
namespace_class(Class) -- XmlNamespace class -
plan(DeclarationPlan) -- The declaration plan
def self.prefix_format?(plan, namespace_class) return false unless namespace_class return false if namespace_class == :blank # :blank has no URI uri = namespace_class.uri ns_info = find_namespace_by_uri(plan, uri) ns_info && ns_info[:format] == :prefix end