Module: Saxon::XPath::StaticContext::Resolver

Defined in:
lib/saxon/xpath/static_context.rb

Overview

methods for resolving a QName represented as a prefix:local-name string into a QName by looking the prefix up in declared namespaces

Class Method Summary collapse

Class Method Details

.resolve_variable_name(qname_string, namespaces) ⇒ Saxon::QName

Resolve a QName string of the form "prefix:local-name" into a QName by looking up the namespace URI in a hash of "prefix" => "namespace-uri"

Parameters:

  • qname_string (String)

    the QName as a "prefix:local-name" string

  • namespaces (Hash<String => String>)

    the set of namespaces as a hash of "prefix" => "namespace-uri"

Returns:



74
75
76
77
78
79
80
81
82
83
84
# File 'lib/saxon/xpath/static_context.rb', line 74

def self.resolve_variable_name(qname_string, namespaces)
  local_name, prefix = qname_string.split(':').reverse
  uri = nil

  if prefix
    uri = namespaces[prefix]
    raise MissingVariableNamespaceError.new(qname_string, prefix) if uri.nil?
  end

  Saxon::QName.create(prefix: prefix, uri: uri, local_name: local_name)
end

.resolve_variable_qname(qname_or_string, namespaces) ⇒ Saxon::QName

Resolve a QName string into a QName.

If the arg is a QName already, it just gets returned. If it’s an instance of the underlying Saxon Java QName, it’ll be wrapped into a QName

If the arg is a string, it’s resolved by using resolve_variable_name

Parameters:

  • qname_or_string (String, Saxon::QName)

    the qname to resolve

Returns:



56
57
58
59
60
61
62
63
64
65
# File 'lib/saxon/xpath/static_context.rb', line 56

def self.resolve_variable_qname(qname_or_string, namespaces)
  case qname_or_string
  when String
    resolve_variable_name(qname_or_string, namespaces)
  when Saxon::QName
    qname_or_string
  when Saxon::S9API::QName
    Saxon::QName.new(qname_or_string)
  end
end